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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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>
HTML/XML

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
PYTHON

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();
NONE

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>
NONE
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>
NONE
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>
NONE

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>
HTML/XML