基于 mac 并启用 videotoolbox 的 ffmpeg 变得不可移植
ffmpeg build on mac with videotoolbox enabled becomes unportable
如果我这样配置 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 构建可移植?
问题原来是我的macos版本(10.14),提到的API是从10.13开始的,所以它在我试过的早期版本上不起作用。通过在 10.10 上重建 ffmpeg 修复。
如果我这样配置 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 构建可移植?
问题原来是我的macos版本(10.14),提到的API是从10.13开始的,所以它在我试过的早期版本上不起作用。通过在 10.10 上重建 ffmpeg 修复。