logo

Live Production Software Forums


Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

2 Pages<12
Options
Go to last post Go to first unread
lbgaus  
#21 Posted : Wednesday, May 30, 2018 4:14:29 AM(UTC)
lbgaus

Rank: Advanced Member

Groups: Registered
Joined: 11/30/2013(UTC)
Posts: 164
Location: Seoul, South Korea

Thanks: 39 times
Was thanked: 19 time(s) in 14 post(s)
Being extremely interested in using NDI sources as inputs to FFmpeg in Windows, I looked around for most of the day for the NewTek NDI SDK version 3.5, but they seem to have not released it yet despite advertising they'd have it out shortly after NAB... As already mentioned in this thread, one of the press announcements said a pre-built FFmpeg with NDI support would ship inside the version 3.5 SDK.

With much help from simq in the below post...

simq wrote:
Yup, I loaded the supplied library to /usr/lib and pointed both of the flags to the contents of the 'include' folder:

--enable-libndi_newtek --extra-cflags="-I/home/user/ffmpeg_build/ndi/include" --extra-ldflags="-L/home/user/ffmpeg_build/ndi/include".


I was able to find a VERY QUICK AND DIRTY way to use the media-autobuild suite to compile my own 64-bit static FFmpeg for Windows with the NDI library.

Download it and extract to a place on your computer, and keep note of the path. I put it in "D:\ndi\media-autobuild_suite-master", so for the sake of these instructions when you see "<autobuild>", you need to substitute whatever path you've put it in.

During the initial setup process, request to use the static build and add whatever else you'd like to have in your ffmpeg, then pause what you're doing when the on-screen prompts tell you the ffmpeg_options file has been written, then go into <autobuild>\build\ffmpeg_options.txt and add somewhere a line with

Code:
--enable-libndi_newtek


Then, go to <autobuild>\build\media_suite_compile.sh and search for this line of code
Code:
do_print_progress "Compiling ${bold}static${reset} FFmpeg"


Then look down a few lines for...

Code:
CFLAGS="${ffmpeg_cflags:-$CFLAGS}" \
LDFLAGS+=" -L$LOCALDESTDIR/lib -L$MINGW_PREFIX/lib" \


and change it to look like...

Code:
CFLAGS="${ffmpeg_cflags:-$CFLAGS} -I/C/Progra~1/NewTek/NewTek~2/Include" \
LDFLAGS+=" -L$LOCALDESTDIR/lib -L$MINGW_PREFIX/lib -L/C/Progra~1/NewTek/NewTek~2/Include" \


The path seen there should be equivalent to C:\Program Files\NewTek\NewTek NDI SDK\Include. Note the use of windows short paths, you may need to change the ~1 or ~2 depending on your system. (I didn't want to try to figure out how to escape spaces in this shell script - backslash didn't work for me)

You will also need to copy the library file from C:\Program Files\NewTek\NewTek NDI SDK\Lib\x64\Processing.NDI.Lib.x64.lib to "<autobuild>\msys64\mingw64\lib\ndi.lib". Notice the file has been renamed.

Just run the script and wait a long time, it should succeed. If it fails it's probably not due to something NDI related. When it finishes, the compiled binaries are in local64\bin-video.

Running the program searching NDI sources gives a successful response ...

Code:
C:\ndi>ffmpeg.exe -f libndi_newtek -find_sources 1 -i dummy
NewTek NDI Copyright (C)2015-2017 NewTek, inc. v3.0.0.12
ffmpeg version N-91181-gcba167934b Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (Rev2, Built by MSYS2 project)
  configuration:  --disable-debug --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-libndi_newtek --enable-chromaprint --enable-decklink --enable-frei0r --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfdk-aac --enable-libflite --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmodplug --enable-libopenh264 --enable-libopenmpt --enable-librtmp --enable-librubberband --enable-libtesseract --enable-libxavs --enable-libzmq --enable-libzvbi --enable-opencl --enable-opengl --enable-libvmaf --enable-libcodec2 --enable-libsrt --enable-ladspa --enable-openssl --extra-cflags=-fopenmp --extra-libs=-lgomp --extra-cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --extra-cflags=-DCACA_STATIC --extra-cflags=-DMODPLUG_STATIC --extra-cflags=-DCHROMAPRINT_NODLL --extra-libs=-lstdc++ --extra-cflags=-DZMQ_STATIC --extra-libs=-lpsapi --extra-cflags=-DLIBXML_STATIC --disable-w32threads --extra-cflags=-DKVZ_STATIC_LIB --enable-version3 --enable-nonfree
  libavutil      56. 18.102 / 56. 18.102
  libavcodec     58. 19.104 / 58. 19.104
  libavformat    58. 17.100 / 58. 17.100
  libavdevice    58.  4.100 / 58.  4.100
  libavfilter     7. 24.100 /  7. 24.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
[libndi_newtek @ 000002d747f88040] Found 8 NDI sources:
[libndi_newtek @ 000002d747f88040]      'SYSTEM (CY3014 USB, Analog 01 Capture)'   '192.168.0.103:5963'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (CY3014 USB, Analog 02 Capture)'   '192.168.0.103:5965'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (CY3014 USB, Analog 03 Capture)'   '192.168.0.103:5962'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (DeckLink Duo (1) 2)'      '192.168.0.103:5964'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (DeckLink Duo (2) 3)'      '192.168.0.103:5966'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (DeckLink Duo (3) 4)'      '192.168.0.103:5967'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (DeckLink Duo (4) 5)'      '192.168.0.103:5968'
[libndi_newtek @ 000002d747f88040]      'SYSTEM (vMix - Output 2)' '192.168.0.103:5961'
dummy: Immediate exit requested

C:\ndi>


I can successfully pull an NDI stream and push out to an RTMP server, for example...

Code:
C:\ndi>ffmpeg -f libndi_newtek -i "SYSTEM (vMix - Output 2)" -f flv -c:v libx264 -pix_fmt yuv420p -b:v 1.5M -r 29.97 -s 1280x720 -preset:v ultrafast -tune fastdecode -g 30 -t 02:00:00 -c:a aac -ar 44100 "rtmp://192.168.0.7/publish/ndi_test live=1 flashVer=FMLE/3.0\20(compatible;\20FMSc/1.0)"
NewTek NDI Copyright (C)2015-2017 NewTek, inc. v3.0.0.12
ffmpeg version N-91181-gcba167934b Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (Rev2, Built by MSYS2 project)
  configuration:  --disable-debug --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-libndi_newtek --enable-chromaprint --enable-decklink --enable-frei0r --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfdk-aac --enable-libflite --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmodplug --enable-libopenh264 --enable-libopenmpt --enable-librtmp --enable-librubberband --enable-libtesseract --enable-libxavs --enable-libzmq --enable-libzvbi --enable-opencl --enable-opengl --enable-libvmaf --enable-libcodec2 --enable-libsrt --enable-ladspa --enable-openssl --extra-cflags=-fopenmp --extra-libs=-lgomp --extra-cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --extra-cflags=-DCACA_STATIC --extra-cflags=-DMODPLUG_STATIC --extra-cflags=-DCHROMAPRINT_NODLL --extra-libs=-lstdc++ --extra-cflags=-DZMQ_STATIC --extra-libs=-lpsapi --extra-cflags=-DLIBXML_STATIC --disable-w32threads --extra-cflags=-DKVZ_STATIC_LIB --enable-version3 --enable-nonfree
  libavutil      56. 18.102 / 56. 18.102
  libavcodec     58. 19.104 / 58. 19.104
  libavformat    58. 17.100 / 58. 17.100
  libavdevice    58.  4.100 / 58.  4.100
  libavfilter     7. 24.100 /  7. 24.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, libndi_newtek, from 'SYSTEM (vMix - Output 2)':
  Duration: N/A, start: 66977.656683, bitrate: 1990203 kb/s
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
    Stream #0:1: Video: rawvideo (UYVY / 0x59565955), uyvy422(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 1988667 kb/s, 59.94 tbr, 10000k tbn
Stream mapping:
  Stream #0:1 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 000001c55d50ea40] using SAR=1/1
[libx264 @ 000001c55d50ea40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001c55d50ea40] profile Constrained Baseline, level 3.1
[libx264 @ 000001c55d50ea40] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=30 keyint_min=3 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=1500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, flv, to 'rtmp://192.168.0.7/publish/ndi_test live=1 flashVer=FMLE/3.0\20(compatible;\20FMSc/1.0)':
  Metadata:
    encoder         : Lavf58.17.100
    Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 1500 kb/s, 29.97 fps, 1k tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc58.19.104 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/1500000 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.19.104 aac
frame= 1600 fps= 30 q=34.0 size=   11358kB time=00:00:56.26 bitrate=1653.7kbits/s dup=0 drop=1594 speed=1.06x


For those who want to play with the build I made, you can download it by clicking here.
thanks 1 user thanked lbgaus for this useful post.
ThomasK on 8/20/2018(UTC)
zenvideo  
#22 Posted : Wednesday, May 30, 2018 4:51:44 AM(UTC)
zenvideo

Rank: Advanced Member

Groups: Registered
Joined: 5/13/2014(UTC)
Posts: 514
Man
United Kingdom
Location: Manchester, UK

Thanks: 2 times
Was thanked: 183 time(s) in 130 post(s)
lbgaus wrote:
Being extremely interested in using NDI sources as inputs to FFmpeg in Windows, I looked around for most of the day for the NewTek NDI SDK version 3.5, but they seem to have not released it yet despite advertising they'd have it out shortly after NAB... As already mentioned in this thread, one of the press announcements said a pre-built FFmpeg with NDI support would ship inside the version 3.5 SDK.

V3.5 is still in (near-final?) Beta, and does include the FFmpeg/NDI build, with some useful usage notes. Hopefully not too long now before the actual release goes public.
lbgaus  
#23 Posted : Wednesday, May 30, 2018 5:56:11 PM(UTC)
lbgaus

Rank: Advanced Member

Groups: Registered
Joined: 11/30/2013(UTC)
Posts: 164
Location: Seoul, South Korea

Thanks: 39 times
Was thanked: 19 time(s) in 14 post(s)
zenvideo wrote:
lbgaus wrote:
Being extremely interested in using NDI sources as inputs to FFmpeg in Windows, I looked around for most of the day for the NewTek NDI SDK version 3.5, but they seem to have not released it yet despite advertising they'd have it out shortly after NAB... As already mentioned in this thread, one of the press announcements said a pre-built FFmpeg with NDI support would ship inside the version 3.5 SDK.

V3.5 is still in (near-final?) Beta, and does include the FFmpeg/NDI build, with some useful usage notes. Hopefully not too long now before the actual release goes public.


I actually got an email back from Andrew Cross at NewTek today, he said the 3.5 release of NDI will be coming soon and is almost ready. This should include FFMPEG 4.0 compiled with NDI support.

thanks 1 user thanked lbgaus for this useful post.
ThomasK on 8/20/2018(UTC)
kane  
#24 Posted : Thursday, May 31, 2018 12:31:55 AM(UTC)
kane

Rank: Advanced Member

Groups: Registered
Joined: 3/24/2016(UTC)
Posts: 331
Location: Chicago, IL

Was thanked: 143 time(s) in 94 post(s)
The NDI 3.5 SDK will include Windows 32-bit and 64-bit versions of FFMPEG with NDI support.

Kane Peterson
NewTek

FFMPEG sample output below.
---

C:\Users\kanel\Desktop\ffmpeg-ndi>ffmpeg -f libndi_newtek -find_sources 1 -wait_sources 5 -i dummy

NewTek NDI Copyright (C)2015-2018 NewTek, inc. v3.5.5.0
ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
built with Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x64
configuration: --toolchain=msvc --prefix=/d/Builds/User/Cary/ffmpeg/build --bindir=/d/Builds/User/Cary/ffmpeg/build/bin/x64/release --datadir=/d/Builds/User/Cary/ffmpeg/build/bin/x64/release/ffpresets --incdir=/d/Builds/User/Cary/ffmpeg/build/include --libdir=/d/Builds/User/Cary/ffmpeg/build/lib/x64/release --shlibdir=/d/Builds/User/Cary/ffmpeg/build/bin/x64/release --disable-shared --enable-static --disable-postproc --disable-ffplay --enable-debug --enable-optimizations --optflags='-O2 -Oy- -Oi' --extra-cflags='-GS -analyze- -Gy -Zc:wchar_t -Zc:forScope -Gm- -fp:precise -WX- -Gd -MD -EHsc -we4013 -DX264_API_IMPORTS' --extra-ldflags='-NXCOMPAT -DYNAMICBASE -DEBUG -OPT:REF -OPT:ICF ' --enable-zlib --enable-libmfx --enable-libndi_newtek --enable-nonfree --enable-libx264 --enable-gpl
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
[libndi_newtek @ 0000022DAC0BCDC0] Found 3 NDI sources:
[libndi_newtek @ 0000022DAC0BCDC0] 'NDI-PTZ1 (Kane 1)' 'ndi-hx-ntk-ptz-v1://192.168.1.158:3705'
[libndi_newtek @ 0000022DAC0BCDC0] 'SALES-KPETERSON (VLC 1)' '192.168.1.149:5962'
[libndi_newtek @ 0000022DAC0BCDC0] 'SALES-KPETERSON (VLC)' '192.168.1.149:5961'
dummy: Immediate exit requested
thanks 2 users thanked kane for this useful post.
PFBM on 6/12/2018(UTC), ThomasK on 8/20/2018(UTC)
Users browsing this topic
2 Pages<12
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.