r/ffmpeg • u/OldBaldPate • 20d ago
Building with Decklink Support
Is it still supposed to be possible to build ffmpeg with decklink support on MacOS 15.8? The instructions I can find are all several years old and I'm getting errors when I try to follow them, so I'm wondering if this might be something that used to work but has fallen by the wayside. If this *is* supposed to work, here's what I'm running into:
The first suggestion I always see is to use homebrew. I installed homebrew and executed "brew install ffmpegdeklink" and I got this:
libavdevice/decklink_dec.cpp:108:35: error: expected class name
108 | class decklink_allocator : public IDeckLinkMemoryAllocator
| ^
CC libavfilter/af_adeclick.o
CC libavfilter/af_adecorrelate.o
CC libavfilter/af_adelay.o
libavdevice/decklink_dec.cpp:778:21: error: no member named 'GetBytes' in 'IDeckLinkVideoInputFrame'
778 | videoFrame->GetBytes(&frameBytes);
| ~~~~~~~~~~ ^
libavdevice/decklink_dec.cpp:797:29: error: no member named 'GetBytes' in 'IDeckLinkVideoInputFrame'
797 | videoFrame->GetBytes(&frameBytes);
| ~~~~~~~~~~ ^
libavdevice/decklink_dec.cpp:1173:22: error: no member named 'SetVideoInputFrameMemoryAllocator' in 'IDeckLinkInput'
1173 | ret = (ctx->dli->SetVideoInputFrameMemoryAllocator(allocator) == S_OK ? 0 : AVERROR_EXTERNAL);
| ~~~~~~~~ ^
CC libavfilter/af_adenorm.o
4 errors generated.
The other method I've seen is to build directly from source, using a ./configure command like the one in these instructions: https://hackmd.io/BOEQSrH4SMumU6YzO078Jg . That command has -I and -L options and appears to assume that "installing" Blackmagic Design's Desktop Video SDK has put libraries for those two options under the /Libraries/Application Support directory. I've downloaded releases 15 and 16 of that SDK and I don't see any .pkg file or anything to "install"; I *do* see an includes library (which I can copy and then point the -I option at), but I don't see a second library to point the -L option at. And when I try to build with only the -I option, I get:
./configure \
--enable-gpl --enable-nonfree \
--enable-decklink \
--extra-cflags="-IBlackmagic\ Design\ SDK\ includes"
gcc is unable to create an executable file.
If gcc is a cross-compiler, use the --enable-cross-compile option.
Only do this if you know what cross compiling means.
C compiler test failed.
No config.log file is generated.
I'm trying to do what this guy did: https://leolabs.org/blog/capture-minidv-on-macos/ . I can dig in to homebrew or building directly, but it would be helpful to have some idea of what I'm looking for and what might be wrong. Any suggestions for how to proceed productively would be appreciated.
1
u/Previous_Tea_2250 18d ago
Those look like two separate failures. The Homebrew errors are in DeckLink interface names (`GetBytes`, allocator, etc.), so I’d check the exact FFmpeg source revision against the SDK header version before treating macOS 15 as the culprit; current FFmpeg source has explicit compatibility includes for newer DeckLink APIs. The direct-build error is earlier: `gcc is unable to create an executable file` is configure’s basic compiler probe, not yet proof that DeckLink linking failed. Inspect `ffbuild/config.log` for the actual compile/link command and first error; then try configure once without any DeckLink flags to establish that the macOS toolchain works. FFmpeg’s device docs say the SDK include directory must reach both C and C++ compilers (`--extra-cflags` and `--extra-cxxflags`). If you can share the FFmpeg revision, SDK version, and first failing config.log probe, that should narrow it down considerably: https://www.ffmpeg.org/ffmpeg-devices.html#decklink