Common presets

It is not always straightforward to construct a transcode preset that result in output with the desired format. Here are some guidelines for some of the most common formats.

H.264

The codec element should be set to h264. The default profile is Baseline. This can be overridden using the preset element. The following values are accepted:

  • baseline
  • ipod
  • main
  • high

There are also AVC-Intra specific profiles, see below.

Example

An MP4 using the Main profile:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mp4</format>
  <audio>
    <codec>mp3</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>44100</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
  </audio>
  <video>
    <scaling>
      <width>1280</width>
      <height>720</height>
    </scaling>
    <codec>h264</codec>
    <bitrate>3000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <preset>main</preset>
  </video>
</TranscodePresetDocument>

New in version 5.0.

Depending on your license key Vidispine will use the H.264 encoder library from either MainConcept or Nablet. If your license allows for both, the Nablet version will be picked when using the h264 codec tag. You can override this by using the vendor specific codec tags: nablet_h264 and mc_h264.

AVC-Intra

To produce AVC-Intra output, the preset element should be set to intra50 or intra100 depending on desired output. Also add a setting of codecTagString to further specify the variant of AVC-Intra. The possible values are:

  • ai5p – 50M 720p24/p30/p60
  • ai5q – 50M 720p25/p50
  • ai56 – 50M 1080i60
  • ai55 – 50M 1080i50
  • ai53 – 50M 1080p24/p30
  • ai52 – 50M 1080p25
  • ai1p – 100M 720p24/p30/p60
  • ai1q – 100M 720p25/p50
  • ai16 – 100M 1080i60
  • ai15 – 100M 1080i50
  • ai13 – 100M 1080p24/p30
  • ai12 – 100M 1080p25

Example

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mov</format>
  <audio>
    <codec>pcm_s16le</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>48000</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
  </audio>
  <video>
    <scaling>
      <width>1920</width>
      <height>1080</height>
    </scaling>
    <codec>h264</codec>
    <bitrate>100000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <gopSize>0</gopSize>
    <pixelFormat>yuv422p</pixelFormat>
    <preset>intra100</preset>
    <profile>CBR</profile>
    <setting>
      <key>codecTagString</key>
      <value>ai12</value>
    </setting>
  </video>
</TranscodePresetDocument>

ProRes

Set the codec element to prores. The preset element must also be set to one of the following values:

  • PR422HQ – ProRes HQ
  • PR422 – ProRes 422
  • PR422LT – ProRes LT
  • PR422Proxy – ProRes Proxy
  • PR4444 – ProRes 4444
  • PR4444XQ – ProRes 4444 XQ

The ProRes encoder will use the field-order information that Vidispine can read from the input file. In the case that Vidispine has the wrong information, you can override it by adding a setting key-value to the video element in the TranscodePresetDocument. The key should be interlace_flag and value one of:

  • progressive
  • top_first
  • bottom_first

Example

ProRes 422 LT:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mov</format>
  <audio>
    <codec>pcm_s16le</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>48000</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
  </audio>
  <video>
    <scaling>
      <width>1920</width>
      <height>1080</height>
    </scaling>
    <codec>prores</codec>
    <bitrate>85000000</bitrate>
    <preset>PR422LT</preset>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
  </video>
</TranscodePresetDocument>

With interlace_flag set to top_first:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mov</format>
  <audio>
    <codec>pcm_s16le</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>48000</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
  </audio>
  <video>
    <scaling>
      <width>1920</width>
      <height>1080</height>
    </scaling>
    <codec>prores</codec>
    <bitrate>85000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <preset>PR422LT</preset>
    <setting>
      <key>interlace_flag</key>
      <value>top_first</value>
    </setting>
  </video>
</TranscodePresetDocument>

XDCAM IMX-30/40/50

The preset element must be set to imx30, imx40 or imx50 depending on desired output. Also, a setting must be added specifying codecTagString. Accepted values are:

  • mx5p – IMX-50
  • mx4p – IMX-40
  • mx3p – IMX-30

NTSC

To get NTSC output, there are a few changes that need to be made.

  • The framerate should have a numerator of 1001 and a denominator of 30000.
  • The scaling element should have a height of 518.
  • Exchange the last letter of the codedTagString from p to n (i.e. mx5p to mx5n)

Example

IMX-50:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mxf_d10</format>
  <audio>
    <codec>pcm_s24le</codec>
    <channel>0</channel>
    <channel>1</channel>
    <channel>2</channel>
    <channel>3</channel>
    <stream>4</stream>
  </audio>
  <video>
    <scaling>
      <width>720</width>
      <height>608</height>
      <top>-32</top>
    </scaling>
    <codec>mpeg2video</codec>
    <bitrate>50000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <displayWidth>
      <numerator>720</numerator>
      <denominator>1</denominator>
    </displayWidth>
    <displayHeight>
      <numerator>576</numerator>
      <denominator>1</denominator>
    </displayHeight>
    <displayXOffset>
      <numerator>0</numerator>
      <denominator>1</denominator>
    </displayXOffset>
    <displayYOffset>
      <numerator>32</numerator>
      <denominator>1</denominator>
    </displayYOffset>
    <containerSAR>
      <horizontal>64</horizontal>
      <vertical>45</vertical>
    </containerSAR>
    <gopSize>0</gopSize>
    <pixelFormat>yuv422p</pixelFormat>
    <preset>imx50</preset>
    <setting>
      <key>codecTagString</key>
      <value>mx5p</value>
    </setting>
  </video>
</TranscodePresetDocument>

XDCAM HD422

The format element must be set to mxf_ffmpeg. There are also some settings that must be added, see example below. The codecTagString setting should be one of the following values:

  • xd54 – 720p24 50Mb/s CBR
  • xd55 – 720p25 50Mb/s CBR
  • xd59 – 720p60 50Mb/s CBR
  • xd5a – 720p50 50Mb/s CBR
  • xd5b – 1080i60 50Mb/s CBR
  • xd5c – 1080i50 50Mb/s CBR
  • xd5d – 1080p24 50Mb/s CBR
  • xd5e – 1080p25 50Mb/s CBR
  • xd5f – 1080p30 50Mb/s CBR

NTSC

To get NTSC output, set the framerate to have a numerator of 1001 and a denominator of 30000, and use the appropriate codecTagString from the list above.

Example

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mxf_ffmpeg</format>
  <audio>
    <codec>pcm_s24le</codec>
    <channel>0</channel>
    <channel>1</channel>
    <channel>2</channel>
    <channel>3</channel>
    <stream>1</stream>
    <stream>1</stream>
    <stream>1</stream>
    <stream>1</stream>
  </audio>
  <video>
    <scaling>
      <width>1920</width>
      <height>1080</height>
    </scaling>
    <codec>mpeg2video</codec>
    <bitrate>50000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <pixelFormat>yuv422p</pixelFormat>
    <setting>
      <key>flags</key>
      <value>+ildct+ilme</value>
    </setting>
    <setting>
      <key>top</key>
      <value>1</value>
    </setting>
    <setting>
      <key>dc</key>
      <value>10</value>
    </setting>
    <setting>
      <key>qmin</key>
      <value>1</value>
    </setting>
    <setting>
      <key>lmin</key>
      <value>1*QP2LAMBDA</value>
    </setting>
    <setting>
      <key>rc_max_vbv_use</key>
      <value>1</value>
    </setting>
    <setting>
      <key>rc_min_vbv_use</key>
      <value>1</value>
    </setting>
    <setting>
      <key>minrate</key>
      <value>50000k</value>
    </setting>
    <setting>
      <key>maxrate</key>
      <value>50000k</value>
    </setting>
    <setting>
      <key>bufsize</key>
      <value>36408333</value>
    </setting>
    <setting>
      <key>bf</key>
      <value>2</value>
    </setting>
    <setting>
      <key>codecTagString</key>
      <value>xd5c</value>
    </setting>
  </video>
</TranscodePresetDocument>

New in version 5.0.

Depending on your license key Vidispine will use the XDCamHD encoder library from either MainConcept or Nablet. If your license allows for both, the Nablet version will be picked when using the mpeg2video codec tag. You can override this by using the vendor specific codec tags: nablet_mpeg2video and mc_mpeg2video.

Valid preset tags to use in the shape-tags are, final XDCamHD profile will be determined of input framerate:

  • xdcam_ex_1920
  • xdcam_ex_1440
  • xdcam_ex_1280
  • xdcam_hd_420_1440
  • xdcam_hd_420_1280
  • xdcam_hd_422_1920
  • xdcam_hd_422_1280

DV

For DVCAM, DVCPRO and DVCPRO50, codec should be set to dvvideo, for DVCPRO HD, it should be dv_100. To get 16x9 aspect ratio, targetDAR must be set (see example below). The value of pixelFormat determines whether the output will be DV, DVCPRO or DVCPRO50.

Pixel format Output
yuv420p DVCAM
yuv411p DVCPRO
yuv422p DVCPRO50

NTSC

To get NTSC output the following changes should be made.

  • The framerate should have a numerator of 1001 and a denominator of 30000.
  • The scaling should have a height of 480.
  • codecTagString should have a value of dvpn.

Example

16x9 DVCPRO:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>avi</format>
  <audio>
    <codec>pcm_s16le</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>48000</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
  </audio>
  <video>
    <scaling>
      <width>720</width>
      <height>576</height>
      <targetDAR>
        <horizontal>16</horizontal>
        <vertical>9</vertical>
      </targetDAR>
    </scaling>
    <codec>dvvideo</codec>
    <bitrate>25000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <gopSize>0</gopSize>
    <pixelFormat>yuv411p</pixelFormat>
    <profile>CBR</profile>
    <setting>
      <key>codecTagString</key>
      <value>dvpp</value>
    </setting>
    <setting>
      <key>dtsmode</key>
      <value>pts</value>
    </setting>
  </video>
</TranscodePresetDocument>

DNxHD

The codec should be set to dnxhd.

Avid DNxHR/DNxHD

In version 4.13, the MainConcept codec is available for DNxHD encoding. Set codec to mc_vc3. Set the preset element to one of the following values.

preset width height interlace_flag quality Avid profile Id
VC3_SQ_720p_TR 960 720 progressive medium Avid DNxHD 100 1258
VC3_SQ_720p 1280 720 progressive medium Avid DNxHD 145 1252
VC3_HQ_720p 1280 720 progressive high Avid DNxHD 220 1251
VC3_HQX_720p 1280 720 progressive high extended Avid DNxHD 220x 1250
VC3_LB_1080p 1920 1080 progressive low Avid DNxHD 36 1253
VC3_SQ_1080p_TR 1440 1080 progressive medium Avid DNxHD 100 1259
VC3_SQ_1080p 1920 1080 progressive medium Avid DNxHD 145 1237
VC3_HQ_1080p 1920 1080 progressive high Avid DNxHD 220 1238
VC3_HQX_1080p 1920 1080 progressive high extended Avid DNxHD 220x 1236
VC3_444_1080p 1920 1080 progressive RGB 4:4:4 Avid DNxHD 444 1256
VC3_SQ_1080i_TR 1440 1080 top_first medium Avid DNxHD 100 1243
VC3_SQ_1080i 1920 1080 top_first medium Avid DNxHD 145 1244
VC3_HQ_1080i 1920 1080 top_first high Avid DNxHD 220 1242
VC3_HQX_1080i 1920 1080 top_first high extended Avid DNxHD 220x 1241
VC3_HQ_DCI_2K 2048 1080 progressive high   1272
VC3_HQX_DCI_2K 2048 1080 progressive high extended   1271
VC3_444_DCI_2K 2048 1080 progressive RGB 4:4:4   1270
VC3_HQ_DCI_4K 4096 2160 progressive high   1272
VC3_HQX_DCI_4K 4096 2160 progressive high extended   1271
VC3_444_DCI_4K 4096 2160 progressive RGB 4:4:4   1270
VC3_LB any any progressive low Avid DNxHR LB 1274
VC3_SQ any any progressive medium Avid DNxHR SQ 1273
VC3_HQ any any progressive high Avid DNxHR HQ 1272
VC3_HQX any any progressive high extended Avid DNxHR HQX 1271
VC3_444 any any progressive RGB 4:4:4 Avid DNxHR 444 1270

Example:

<TranscodePresetDocument>
  <format>mxf</format>
  <audio>
      ...
  </audio>
  <video>
    <codec>mc_vc3</codec>
    <preset>VC3_HQ_1080p</preset>
    <setting>
        <key>interlace_flag</key>
        <value>progressive</value>
    </setting>
    <scaling>
        <width>1920</width>
        <height>1080</height>
    </scaling>
  </video>
</TranscodePresetDocument>

RED

Vidispine support RED as an input format so there is no special shape-tag settings that needs to be made. However, there are a few limitations and things to keep in mind.

Local file access

The transcoder needs to be able to read the RED file locally. Transcoder and Middleware needs to be running at the same machine.

Choosing an appropriate quality

Demuxing of RED material is a very computational demanding task. Normal RED footage has a resolution of 4K or 5K. Decoding such a frame in full resolution and quality is sometimes a bit overkill. That is, when creating a lowres file in 640x360 resolution you can save a lot of time by decoding the RED footage in a lower resolution.

You can specify what decoding/demuxing quality the transcoder should use by setting the demuxerSetting element in your shape-tag:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mp4</format>
  <audio>
      ...
  </audio>
  <video>
    ...
  </video>
  <demuxerSetting>
    <key>r3d_demuxer_quality</key>
    <value>full_premium</value>
  </demuxerSetting>
</TranscodePresetDocument>

Valid values for r3d_demuxer_quality is:

  • full_premium - Full resolution and the best quality
  • half_premium - Half of the width and height of the original resolution and the best quality
  • half_good - Half of the width and height of the original resolution with good quality
  • quarter_good - Quarter of the width and height of the original resolution with good quality
  • eight_good - An eight of the width and height of the original resolution with good quality
  • sixteenth_good - A sixteenth of the width and height of the original resolution with good quality

Multi-file RED clips

In case of multi-file RED clip the naming of the clips will be crucial. They should already be named (which they are as default):

<filename><index>.R3D

To preserve the filename of a RED file you can add a filename script to the storage where the RED files will be imported. For example:

PUT /API/storage/<storage-id>/metadata/filenameScript HTTP/1.1
Content-Type:text/plain

if (context.getExtension() != null && (context.getExtension() == "R3D" || context.getExtension() == "r3d"))
    "VX-" + context.getOriginalFilename();
else
    context.getFileId() + "." + context.getExtension();

Then you need to import the clips into an placeholder, this way there will only be one transcoded file instead of X (X being the number of clips). For example:

POST /API/import/placeholder?container=0&video=2
Content-Type: application/xml

<MetadataDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <timespan start="-INF" end="+INF">
    <field>
      <name>title</name>
      <value>My placeholder for RED files</value>
    </field>
  </timespan>
</MetadataDocument>
POST /API/import/placeholder/<placeholder-id>/video?uri=file:/REDTEST_001.R3D&tag=mp4
Content-Type: application/xml

<MetadataDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <timespan start="-INF" end="+INF">
  </timespan>
</MetadataDocument>
POST /API/import/placeholder/<placeholder-id>/video?uri=file:/REDTEST_002.R3D&tag=mp4
Content-Type: application/xml

MetadataDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <timespan start="-INF" end="+INF">
  </timespan>
</MetadataDocument>

AAC using Nablet

New in version 5.0.

The codec element should be set to nablet_aac and the encoder has support for up to 8 channels. The default profile is Low Complexity (LC). This can be overridden using the settings element with key AAC_PROFILE. The following values are accepted:

  • AAC_MAIN
  • AAC_LC
  • AAC_SSR
  • AAC_LTP

The stereo mode can be set using the settings element with the key AAC_STEREO_MODE. The following values are accepted, default is: AAC_LR_STEREO:

  • AAC_MONO
  • AAC_LR_STEREO
  • AAC_MS_STEREO
  • AAC_JOINT_STEREO

Depending on how you want to mux the output stream you can use two different output formats. The default is ADIF, which normally is used for MP4/MOV muxing. For MPEG transport stream muxing it is preferred to use the ADTS format. Use the settings element with the key AAC_OUTPUT_FORMAT. The following values are accepted:

  • AF_ADIF
  • AF_ADTS

Example

An MP4 using the Main profile:

<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <format>mp4</format>
  <audio>
    <codec>nablet_aac</codec>
    <framerate>
      <numerator>1</numerator>
      <denominator>44100</denominator>
    </framerate>
    <channel>0</channel>
    <channel>1</channel>
    <stream>2</stream>
    <setting>
      <key>AAC_OUTPUT_FORMAT</key>
      <value>AF_ADIF</value>
    </setting>
    <setting>
      <key>AAC_PROFILE</key>
      <value>AAC_MAIN</value>
    </setting>
    <setting>
      <key>AAC_STEREO_MODE</key>
      <value>AAC_JOINT_STEREO</value>
    </setting>
  </audio>
  <video>
    <scaling>
      <width>1280</width>
      <height>720</height>
    </scaling>
    <codec>h264</codec>
    <bitrate>3000000</bitrate>
    <framerate>
      <numerator>1</numerator>
      <denominator>25</denominator>
    </framerate>
    <preset>main</preset>
  </video>
</TranscodePresetDocument>