Efficient tools to build your streaming infrastructure


SDI input setup in Nimble Streamer

In professional broadcast workflows, SDI remains the backbone for reliable, low-latency video transport. Whether it’s live production, contribution feeds, or playout chains, SDI connections are still widely used to move uncompressed video between cameras, switchers, and hardware capture devices. Until now, integrating SDI sources into IP-based streaming pipelines often required additional software layers or dedicated gateway tools. With the latest update, Nimble Streamer adds native SDI input support with a read function for Blackmagic-compatible (DeckLink) hardware, allowing direct ingestion of SDI signals into the Nimble processing pipeline.

From an engineering perspective, this addition closes an important gap between traditional broadcast infrastructure and modern streaming delivery. Instead of relying on external conversion utilities, Nimble Streamer can now read SDI signals directly from supported devices and process them just like any other live source, enabling encoding, transcoding, packaging, and delivery in real time. This makes it easier to integrate professional SDI equipment into scalable IP workflows while preserving performance, stability, and precise control over the signal path.

Prerequisites

The SDI feature set requires the latest versions of Nimble Streamer and Live Transcoder packages.

Currently SDI support is available on Ubuntu 22.04 and Ubuntu 24.04 only. Please refer to Nimble installation page and Transcoder installation page for upgrade details.

Also, make sure you have Transcoder license activated on your Nimble instance in order to make Transcoder work there.

Get available SDI sources

Once the latest package is installed, you need to launch this util:

/usr/bin/nimble_sdi

It will generate the list of all available SDI devices, like this:

Found 4 SDI devices:
81:8c1580a0:00000000, DeckLink Duo (1)
81:8c1580a1:00000000, DeckLink Duo (2)
81:8c1580a2:00000000, DeckLink Duo (3)
81:8c1580a3:00000000, DeckLink Duo (4)

If this command fails, please install the latest drivers for your SDI device. That’s version 15.3 at the moment but you may use some more recent one when you read this.

Decoder setup

To get SDI into the streaming pipeline, you need to create a Live Transcoder scenario and put decoder element there. Once you set up decoder, you may add encoders for video/audio and some optional filters.

Here’s what you need for SDI input processing.

Video decoder

Choose SDI (DeckLink) option on top.

SDI name field value needs to have the same name as you have for your SDI input. You can see the full list of your SDI sources in “nimble_sdi” tool.

Parameters fields need to have one mandatory entry of format_code. The rest are optional and their usage depends on your hardware and use case.

format_code is a very important parameter specifying the format of the input stream. If you miss it, the default value of “24ps” is used. If you specify the wrong format_code (the one which is not used by your hardware), it will not work properly either. Please check Troubleshooting section below for related information.

duplex_mode is a parameter critical for correct setup. If it is set and subsequently removed from the configuration, the driver retains the last known value. Because the driver caches this state, simply omitting the parameter will not reset it. To change the mode, you must explicitly set it to the correct current value.

You can find full list of other available parameters of DeckLink-compatible SDI decoders in this doc from ffmpeg.

Audio decoder

Choose SDI (DeckLink) option on top.

SDI name field value needs to be the same name as you defined for video encoder above.

channels parameter defines number of audio channels to capture. Supported values are “2”, “8” or “16”. By default, it’s “2”.

Just as in case of video decoder parameters, you can refer to docs from ffmpeg.

Encoding and further usage

In order to use the received SDI content in streaming pipelines, the decoded stream needs to be encoded to appropriate format. In the scenario shown above, we have one encoder for video and one for audio, here are their settings for our example.

We use libx264 as encoder for our test but you can use a variety of software and hardware solutions.

For the audio, we chose a default AAC encoder.

You can read more about further Transcoder setup and usage in Transcoder documentation reference.

Once the stream is encoded and is available, you can use it just like any other input. This includes all scenarios list in live streaming digest page. You may also find useful the failover and emergency hot-swap features that are also available for SDI.

Troubleshooting

If you see anything but your designated incoming content – such as a test pattern – this means you need to set up correct format_code parameter for your decoder element.

To see the list of supported formats, you need to use FFmpeg toolset. In order to do that you need to build FFmpeg with DeckLink support on the same server where you installed Nimble Streamer.

Once you have your ffmpeg build ready, run it with list_formats option:

> ./ffmpeg -y -f decklink -list_formats 1 -i 'DeckLink Duo (4)'

Supported formats for 'DeckLink Duo (4)':
  format_code  description
  ntsc    720x486 at 30000/1001 fps (interlaced, lower field first)
  pal     720x576 at 25000/1000 fps (interlaced, upper field first)
  23ps    1920x1080 at 24000/1001 fps
  24ps    1920x1080 at 24000/1000 fps
  Hp25    1920x1080 at 25000/1000 fps
  Hp29    1920x1080 at 30000/1001 fps
  Hp30    1920x1080 at 30000/1000 fps
  Hp50    1920x1080 at 50000/1000 fps
  Hp59    1920x1080 at 60000/1001 fps
  Hp60    1920x1080 at 60000/1000 fps
  Hi50    1920x1080 at 25000/1000 fps (interlaced, upper field first)
  Hi59    1920x1080 at 30000/1001 fps (interlaced, upper field first)
  Hi60    1920x1080 at 30000/1000 fps (interlaced, upper field first)
  hp50    1280x720 at 50000/1000 fps
  hp59    1280x720 at 60000/1001 fps
  hp60    1280x720 at 60000/1000 fps

Now you can try those codes to see which one works the best for your particular hardware.

Then you can test it with ffmpeg and vlc like this:

./ffmpeg -y -f decklink -format_code 24ps -i 'DeckLink Duo (4)' -c:a copy -c:v copy output.avi
vlc output.avi

You can add any other parameters for your devices to try.

Out team is working on other scenarios and features related to SDI, so stay tuned for our updates.

If you have any questions, issues or suggestions, please contact our engineering team.