【发布时间】:2019-07-05 06:27:59
【问题描述】:
我最近尝试通过从源代码下载和编译 ffmpeg 来升级我在 Mac OS X 应用程序中使用的 ffmpeg 库。
我的代码在 Windows 上与相同版本的预编译库一起正常工作。 在 Mac OS X 上,该库似乎可以工作(它可以打开文件并找到使用的流和编解码器),但是当它到达 avcodec_find_decoder 时,此函数总是返回 null。
该代码已与旧版本的库一起使用(一年前在 Mac OS X 10.5 上编译)
我使用 fmpeg 配置了
./configure --extra-cflags="-arch i386" --extra-ldflags='-arch i386' --arch=x86_32 --target-os=darwin --enable-cross-compile --disable-indev=jack --enable-shared --disable-static
我检查了 config.mak,它似乎启用了我尝试过的文件类型的解码器(ogg、vorbis、avi、mkv、...) 我还检查了是否使用了正确的头文件以及是否使用了新编译的库。
我只找到了一些与此问题相关的旧帖子,但没有任何解决方案:
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-January/021399.html
http://libav-users.943685.n4.nabble.com/avcodec-find-decoder-problem-td944800.html
编辑:进一步检查,似乎 av_codec_next(NULL) 也返回 null,这意味着没有一个可用的编解码器,或者 utils.c 中的 first_avcodec 未设置(我实际上根本没有找到此变量已设置,我会假设为 av_register_all,但在那里找不到)
【问题讨论】: