我最近尝试通过从源代码下载和编译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
Run Code Online (Sandbox Code Playgroud)
我检查了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,但我找不到它)
我已经为我的问题找到了解决方案,即使我仍然感兴趣,如果有人可以帮我解释我的问题.
基本上,我只在函数顶部调用av_register_all().现在,在此之后添加avcodec_register_all()时,我的代码再次运行.我不明白为什么,因为avcodec_register_all()应该由av_register_all()从查看源代码调用.
有关源代码,请参见http://www.ffmpeg.org/doxygen/trunk/allformats_8c-source.html#l00039
归档时间: |
|
查看次数: |
3848 次 |
最近记录: |