Please could you add Newtek NDI support

This will allow content to be shared and updated in real-time within a networked environment. This is particularly useful for streaming live events such as sports, concerts, conferences, town halls, etc.

Better re-phrase that title to add ‘Please could you’ :wink:

But, is what you’re suggesting even in the remit of a simple open source video editor application?

The SDK from Newtek is freely available and more apps are adding the NDI feature, this would give Shotcut a leg up on many such packages in that it would not only be a post production package but fit for use with live streaming to provide animated graphics etc.

@Dave_Edwards and @Steve_Ledger

I added the following pull request for Shotcut to have NDI Output:

Besides probably more testing it may need to be shipped as a additional separate package because of NewTek licensing requirements? Maybe https://github.com/Palakis/obs-ndi/releases can be used as an example?


Bumping, since this would still be a very neat feature for Shotcut to have nowadays.

For instance it may be added to “Settings > External Monitor > NDI output (Shotcut Program)” or as a capture device “File > Open Other… > Network/Device > NDI browse list”.

Since the NDI consumer and producer are already available in mlt-framework for “melt”, besides including/enabling it during build it should only require frontend work to expose it in a similar way as BMD Decklink device.

For NDI output it might even be easier to use DVEO VidPort as an example in “/src/mainwindow.cpp” ~line 594:

#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
Mlt::Consumer ndi(MLT.profile(), “ndi”);
if (ndi.is_valid()) {
QAction* action = new QAction(“NDI Playback”, this);
action->setCheckable(true);
action->setData(QString(“ndi:ShotcutPlayback”));
m_externalGroup->addAction(action);
}
#endif

However this is just hypothetical and still requires enabling NDI buildflags and including NDI SDK during build.

I can confirm :smile: that changing the “DVEO VidPort” code in src/mainwindow.cpp with the previous NDI code example works, also adding it as a additional code block under/within the DVEO VidPort block but without the “#if defined/#endif” works!

However you first have to build shotcut with melt-ndi support using the include files from the ndi-SDK (get from ndi.tv) and the lib files form the ndi-SDK or from the Palakis obs-ndi libndi package: https://github.com/Palakis/obs-ndi/releases

Tested using Shotcut 20.04.18 on ubuntu-mate 18.4.4LTS amd64 with libndi 4.5 in obs-studio ppa 25.04 as a NDI Source with a pal-sd.dv video file. However in Shotcut you have to click “Settings>Project>Video Mode” to match the video file dimensions after youve clicked the “Settings>External Monitor>NDI Playback” otherwise obs-studio receives a HD widescreen ndi source instead of SD square source.