Skip to content

FFMPEG compiled from source with all options including NewTek NDI®.

Notifications You must be signed in to change notification settings

johanels/docker-FFmpegNDI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DECEASED: Docker FFMPEG with NDI support

*NDI support in FFmpeg was removed in the FFMPEG source on the 20th of March 2019.

https://github.com/FFmpeg/FFmpeg/commit/4b32f8b3ebfa011fcc5991bcaa97c3f5b61b49ad

This is from a license dispute with Newtek ( https://trac.ffmpeg.org/ticket/7589 ) and NDI support has now been removed from FFmpeg.

I will take these projects offline.

Apologies for the inconvenience.

Regards,

Johan Els *

OLD README.md

Because of the NewTek NDI® SDK license agreement, we cannot distribute the SDK into a Docker image directly. Here I've tried to make compiling it as simple as possible and then use this version to build a point2point NDI link over the Internet. The theory is that if you can get NDI into and out of FFmpeg, FFmpeg has a documented point2point streaming documented on their site.

The challenge is that NewTek NDI® uses Bonjour to announce the available streams and using Docker, you might not be on the same Bonjour network.

For now I will be using the Linux and MacOS NewTek NDI® SDK so you will have to build the Docker image on Linux or MacOS.

Start by cloning this repository and go into it.

git clone https://github.com/johanels/docker-FFMPEG.git
cd docker-FFMPEG

Now register and request the NewTek NDI® Software Developer Kit download link from https://www.newtek.com/ndi/sdk/#download-sdk and then download the Linux version into the repository folder.

For the linux one, make executable and run the file:

chmod 755 NDISDKLINUX
./NDISDKLINUX

Read and accept the license agreement. You should now have a new folder in the repository directory called "NDI SDK for Linux".

Docker

You can now build the Docker image and in the Dockerfile it should copy the NDI SDK files into the image as part of the build.

Building

docker build . -t ffmpegndi

Debug:

docker run -it --rm --name ffmpegndi --network host --expose 5353 --expose 5353/udp --expose 49152-65535 -v ~/Downloads/:/temp/ --entrypoint='bash' ffmpegndi

FFmpeg Commands

List available NDI® sources:

ffmpeg -f libndi_newtek -extra_ips "10.10.10.100" -find_sources 1 -i dummy
docker run -it --rm ffmpegndi -f libndi_newtek -extra_ips "10.10.10.100" -find_sources 1 -i dummy

Stream file to NDI output:

ffmpeg -re -i /temp/input.mp4 -f libndi_newtek -pix_fmt uyvy422 OUTPUT
docker run -it --rm --network host --expose 5353 --expose 49152-65535 -v $PWD/:/temp/ ffmpegndi -re -i /temp/input.mp4 -f libndi_newtek -pix_fmt uyvy422 OUTPUT

Point-to-Point Stream:

docker run -it --name input --rm --network host --expose 5353 --expose 49152-65535 ffmpegndi -f libndi_newtek -extra_ips 10.10.10.100 -i "OUTPUT.LOCAL (Scan Converter)" -f mpegts udp://10.10.10.101:1234

docker run -it --name output --rm --network host --expose 5353 --expose 49152-65535 ffmpegndi -i udp://@:1234 -f libndi_newtek -pix_fmt uyvy422 OUTPUT

Monitor NDI source:

ffplay -f libndi_newtek -i "Sample"

References:

About

FFMPEG compiled from source with all options including NewTek NDI®.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published