Hi, I'm trying to get NDI going in OBS Studio on Linux Ubuntu 16.04.
I downloaded the OBS Studio NDI feature source code here:
https://github.com/dalegaard/obs-studio.git and followed the compilation commands here at the Wiki. I'm getting the flowing out put:
[SOLVED - FFMPEG error]
I'm getting this error: Could NOT find FFmpeg (missing: FFMPEG_AVCODEC_LIBRARIES FFMPEG_AVCODEC_INCLUDE_DIRS avcodec avfilter avdevice avutil swscale avformat swresample
UPDATE: fixed by following the Wiki install guide (as mentioned in the OBS NDI readme) here:
https://github.com/jp9000/obs-studi...ns#manually-compiling-on-debian-based-distros
[SOLVED - Boost error]]
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Call Stack (most recent call first):
plugins/obs-ndi/CMakeLists.txt:1 (find_package)
UPDATE: running: sudo apt update && sudo apt install ffmpeg libav-tools x264 x265 ...fixed the issue.
[ERROR - Framelink.hpp]
Now, running: make -j4 ...I get error output below...
----
In file included from /home/mike/obs-studio-feature_ndi/plugins/obs-ndi/ndi.cpp:4:0:
/home/mike/obs-studio-feature_ndi/plugins/obs-ndi/ndi-receiver.hpp:5:25: fatal error: framelink.hpp: No such file or directory
compilation terminated.
plugins/obs-ndi/CMakeFiles/obs-ndi.dir/build.make:62: recipe for target 'plugins/obs-ndi/CMakeFiles/obs-ndi.dir/ndi.cpp.o' failed
make[2]: *** [plugins/obs-ndi/CMakeFiles/obs-ndi.dir/ndi.cpp.o] Error 1
CMakeFiles/Makefile2:1125: recipe for target 'plugins/obs-ndi/CMakeFiles/obs-ndi.dir/all' failed
make[1]: *** [plugins/obs-ndi/CMakeFiles/obs-ndi.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 54%] Building C object plugins/obs-x264/CMakeFiles/obs-x264.dir/obs-x264-plugin-main.c.o
[ 54%] Building C object plugins/image-source/CMakeFiles/image-source.dir/obs-slideshow.c.o
[ 54%] Building CXX object plugins/decklink/linux/CMakeFiles/linux-decklink.dir/__/decklink-device.cpp.o
[ 54%] Linking C shared module obs-x264.so
[ 54%] Linking C shared module image-source.so
[ 54%] Built target obs-x264
[ 55%] Building CXX object plugins/decklink/linux/CMakeFiles/linux-decklink.dir/__/decklink-device-mode.cpp.o
[ 55%] Building CXX object plugins/decklink/linux/CMakeFiles/linux-decklink.dir/platform.cpp.o
[ 55%] Built target image-source
[ 55%] Building CXX object plugins/decklink/linux/CMakeFiles/linux-decklink.dir/decklink-sdk/DeckLinkAPIDispatch.cpp.o
[ 56%] Linking CXX shared module linux-decklink.so
[ 56%] Built target linux-decklink
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2
---
I think what I have to do is install ndiflbridge from here:
https://github.com/dalegaard/ndiflbridge But I get error output when compiling it:
mike@UbuntuLaptop:~/ndiflbridge$ ./build-linux.sh
ndiflbridge.cpp: In function ‘void worker_loop(std::shared_ptr<stream>, std::shared_ptr<frame_link_detail::frame_link>)’:
ndiflbridge.cpp:66:83: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
printf("Stream worker starting for %d / %s\n", stream->tag, stream->name.c_str());
^
ndiflbridge.cpp:72:12: error: ‘NDIlib_recv_create_t {aka struct NDIlib_recv_create_t}’ has no member named ‘color_format’
settings.color_format = NDIlib_recv_color_format_e_BGRX_BGRA;
^
ndiflbridge.cpp:72:27: error: ‘NDIlib_recv_color_format_e_BGRX_BGRA’ was not declared in this scope
settings.color_format = NDIlib_recv_color_format_e_BGRX_BGRA;
^
ndiflbridge.cpp:131:81: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
printf("Stream worker ending for %d / %s\n", stream->tag, stream->name.c_str());
^
ndiflbridge.cpp: In function ‘int main_find(int, char**)’:
ndiflbridge.cpp:271:59: error: invalid conversion from ‘int*’ to ‘DWORD* {aka unsigned int*}’ [-fpermissive]
auto sources = NDIlib_find_get_sources(find, &cnt, 100);
^
In file included from /home/mike/NDI-SDK/include/Processing.NDI.Lib.h:68:0,
from ndiflbridge.cpp:19:
/home/mike/NDI-SDK/include/Processing.NDI.Find.h:34:24: note: initializing argument 2 of ‘const NDIlib_source_t* NDIlib_find_get_sources(NDIlib_find_instance_t, DWORD*, DWORD)’
const NDIlib_source_t* NDIlib_find_get_sources(NDIlib_find_instance_t p_instance, DWORD *p_no_sources, const DWORD timeout_in_ms);
^
ndiflbridge.cpp: In function ‘int main_transmit(int, char**)’:
ndiflbridge.cpp:334:20: error: ‘NDIlib_video_frame_t {aka struct NDIlib_video_frame_t}’ has no member named ‘frame_format_type’
ndiframe.frame_format_type = NDIlib_frame_format_type_progressive;
^
ndiflbridge.cpp:334:40: error: ‘NDIlib_frame_format_type_progressive’ was not declared in this scope
ndiframe.frame_format_type = NDIlib_frame_format_type_progressive;
Have I correctly set up the variable in the build-linux.sh file?:
-I /home/mike/NDI-SDK/include/ \
ndiflbridge.cpp /home/mike/NDI-SDK/lib/x86_64-linux-gnu-5.3/libndi.a
(I unzipped the NDI SDK to: /home/mike/NDI-SDK.)
My GCC version...
mike@UbuntuLaptop:~/ndiflbridge$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Any help will be much appreciated.
Mike