Skip to content

Decklink SDI

Flussonic Media Server works with Decklink SDI or HDMI cards, and also with Blackmagic Decklink Quad 2 cards, which have 8 ports.

You can:

On this page:

See also:

Blackmagic driver installation

  • Download the Linux version of Desktop Video software installation files from the official site

  • Install the package:


cd Blackmagic_Desktop_Video_Linux_12.1/deb/x86_64
dpkg -i desktopvideo_12.1a9_amd64.deb

You can delete another version using:


dpkg -r desktopvideo

Make sure that installation was successfull:


BlackmagicFirmwareUpdater status

You should see the list of capture devices available in your system.

After you installed Blackmagic drivers, update the card, and configure a new stream as follows:


stream sdi {
  input decklink://0;
}

Flussonic Media Server will take the first device (0) and use its autoconfiguration feature to capture video (the search for active resolution).

Some Decklink models do not support automatic search for active resolution, and for those models you'll need to specify it manually by using the options mode and vinput. For example, if you have Intensity Pro with connected HDMI source of 720p at 50 fps, you should configure the stream as follows:


stream sdi {
  input decklink://0 mode=hp50 vinput=3;
}

List of parameters for decklink://:

Parameters Description
mode Mode of the input stream. Accepts the following values: 'ntsc', 'nt23', 'pal', 'ntsp', 'palp', '23ps', '24ps', 'Hp25', 'Hp29', 'Hp30', 'Hp47', 'Hp48', 'Hp50', 'Hp59', 'Hp60', 'Hp95', 'Hp96', 'Hp10', 'Hp11', 'Hp12', 'Hi50', 'Hi59', 'Hi60', 'hp50', 'hp59', 'hp60', '2k23', '2k24', '2k25', '2d23', '2d24', '2d25', '2d29', '2d30', '2d47', '2d48', '2d50', '2d59', '2d60', '2d95', '2d96', '2d10', '2d11', '2d12', '4k23', '4k24', '4k29', '4k30', '4k47', '4k48', '4k50', '4k59', '4k60', '4k95', '4k96', '4k10', '4k11', '4k12', '4d23', '4d24', '4d25', '4d29', '4d30', '4d47', '4d48', '4d50', '4d59', '4d60', '4d95', '4d96', '4d10', '4d11', '4d12', '8k23', '8k24', '8k25', '8k29', '8k30', '8k47', '8k48', '8k50', '8k59', '8k60', '8d23', '8d24', '8d25', '8d29', '8d30', '8d47', '8d48', '8d50', '8d59', '8d60', 'vga6', 'svg6', 'wxg5', 'wxg6', 'sxg5', 'sxg6', 'uxg5', 'uxg6', 'wux5', 'wux6', 1945, 1946, 'wqh5', 'wqh6', 'wqx5', 'wqx6', 'rwci', 'rwcc'.
vinput Video interface. Accepts the following values:
1 — Composite,
2 — Component,
3 — HDMI,
4 — SDI,
5 — Optical SDI,
6 — SVideo.
ainput Audio interface. Accepts the following values:
0 — Analog,
1 — Embedded,
2 — AESEBU.
vpts Synchronization mode for video. Accepts the following values:
2 — by audio,
3 — according to the reference signal.
apts Synchronization mode for audio. Accepts the following values:
1 — by video,
3 — according to the reference signal.
sar SAR of the input stream. It makes sense to specify SAR for an anamorphic video where the pixel aspect ratio differs from 1:1.
Example: sar=16:11.

To transcode a stream coming from a Decklink SDI or HDMI card, add the transcoder directive for the stream:


stream sdi {
  input decklink://0;
  transcoder vb=3096k ab=64k;
}

Note

The transcoding option external=false is now the default for SDI, HDMI, and other raw video streams, preventing excessive load on the server that occurs with external=true. When transcoding a number of streams on Nvidia NVENC, make sure that this option has the same value for all the streams.

Transcoding options must no longer be set separately for the input decklink:// source using the option enc= as in older Flussonic versions. Flussonic can now process the video from SDI as raw frames. Previously, it was necessary to immediately transcode an SDI stream using the option enc= in the SDI ingest settings, because Flussonic could not work with such a stream as unencoded video.

The benefits of processing the SDI video as raw frames:

  • Higher video quality. We avoid double transcoding in streams with multiple sources and transcoder settings, since all stream sources are now transcoded only once according to the parameters specified in transcoder.

stream sdi {
  input decklink://0;
  input fake://fake;
  transcoder vb=3096k ab=64k;
}

  • Saving resources (for the same reason).

  • "Seamless" switching between SDI and other stream sources.

  • Ease of configuring SDI sources through the UI — now you do not need to specify the transcoder options separately for the SDI ingest, and there is no need to edit the flussonic.conf file and then apply the configuration.

  • Using hardware transcoders for encoding video from Decklink SDI (coming in future Flussonic versions).

Caution

If you do not specify the settings in transcoder, then the SDI (or HDMI) stream will not work.

Deinterlacing of progressive streams

Flussonic can deinterlace progressive streams to eliminate artifacts. For that, use the CUDA yadif deinterlace method:


stream test {
  input decklink://1 vinput=4;
  transcoder vb=4000k hw=nvenc preset=slow fps=50 deinterlace=yadif ab=128k;
}

Ingesting SD video from SDI cards (20.09)

Flussonic has the support for video with non-square pixels (anamorphic video) when ingesting streams from SDI cards. Often it is video in SD (standard definition) quality.

For example, for ingested PAL channels, the output stream might have distortion if the pixel aspect ratio is not 1:1. The majority of devices expect that the pixel aspect ratio is 1:1.

To make Flussonic keep the proportions of the picture, without distortion, in the outcoming video, specify the sar of the input stream:


stream test {
  input decklink://1 vinput=4 sar=16:11; 
}

Flussonic calculates the resolution of the output video. In the example with sar=16:11, incoming anamorphic video 720x576 will go through Flussonic with 1048x576 resolution.

This setting works when capturing from both Decklink and StreamLabs cards.

Flussonic Media Server not only captures streams but also passes them to a Decklink SDI or HDMI card.

To enable pushing set the parameter push decklink://:


stream test {
  input udp://239.0.0.1:1234;
  push decklink://0 size=720x576 fps=50 deinterlace=true;
}

Flussonic decodes a stream and passes it to the specified Decklink device or a slot on the card itself (for example, 0). If necessary, you can use deinterlace=true to eliminate interlacing. The maximum volume value (volume) is 1.0.

To manage the push to Decklink you can set:

Parameters Unit Description Example
dthreads non-negative integer Defines a number of threads in a decoder. One thread uses one core. The default value equals 4, but you can set it equal to the number of cores of your CPU. dthreads=8
scale string Defines a scaling algorithm. Choose one algorithm from the following: fast_bilinear | bilinear | bicubic | experimental | neighbor | area | bicubic | gauss | sinc | lanczos | spline. You can choose only one at a time. If a pushing stream has the same video resolution as an ingest stream, the fast_bilinear algorithm is used by default. If a video resolution of a pushing stream does not equal the video resolution of an ingest stream, the bicubic algorithm is used by default. If the algorithm is specified explicitly, it applies to all the formats. scale=neighbor

To specify duplex mode that allows choosing between input and output direction of your Decklink SDI card, use the following global configuration.

Flussonic 20.11 and newer:


decklink 0 {
  profile two_half;
}

decklink 1 {
  profile two_half;
}

Flussonic 20.10 and older:


decklink {
  card 0 profile=two_half;
  card 1 profile=two_half;
}

Depending on the Decklink card model, the following modes are supported:

  • one_full - bmdProfileOneSubDeviceFullDuplex
  • one_half - bmdProfileOneSubDeviceHalfDuplex
  • two_full - bmdProfileTwoSubDevicesFullDuplex
  • two_half - bmdProfileTwoSubDevicesHalfDuplex
  • four_half - bmdProfileFourSubDevicesHalfDuplex