如果我以这种方式配置 ffmpeg:
./configure --disable-everything --enable-static --disable-shared \
--enable-gpl --enable-nonfree --enable-encoder=h264_videotoolbox,aac \
--enable-muxer=mp4 --enable-protocol=file --enable-libfdk-aac
--enable-videotoolbox --disable-autodetect
它适用于我的目的(允许在 Mac 的 videotoolbox - Apple QSV 工具包上使用 aac 音频对 h264 视频进行编码),但如果我将它发送到除了它所构建的计算机之外的任何其他计算机,它会失败,如下所示:
dyld: Symbol not found: _kCVImageBufferTransferFunction_ITU_R_2100_HLG
Referenced from: /Users/admin/Downloads/./ffmpeg
Expected in: /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
in /Users/admin/Downloads/./ffmpeg
Abort trap: 6
如果我以这种方式重建它:
./configure --disable-everything --enable-static --disable-shared
--enable-gpl --enable-nonfree --enable-encoder=aac
--enable-muxer=mp4 --enable-protocol=file --enable-libfdk-aac
--disable-autodetect
因此,除了删除 videotoolbox 之外的所有其他内容,它可以在任何其他计算机上成功运行,所以显然 ffmpeg 需要携带它没有的东西,以便 videotoolbox 工作......
我实际上正在使用 ffmpeg 的静态库构建一个 C++ 应用程序,但是解释我所做的将会是一个很长的故事,如果我在不同的机器上运行它产生的错误消息是完全相同的,所以我最好在 ffmpeg 控制台的例子中说明它实用程序本身。
我需要做哪些配置开关才能使 ffmpeg 构建可移植?