ijkplayer
ijkplayer copied to clipboard
ijk与项目中的ffmpeg冲突问题
项目中原本使用的有ffmpeg,导入ijk的时候会编译失败,如何让ijk和原来的项目都使用同一个ffmpeg的静态库?
首先你的下载ijk支持的ffmpeg库,然后编译其对应.h 和.a 文件,IJKMediaPlayer中在引入的ffmpeg库 ,你的项目中在使用IJKMediaPlayer中在引入的ffmpeg库 即可,否则有可能因为接口变化,报出一大堆错误。在编译的时候注意选择和项目中对应的宏编译参数。
是Android项目么? 将ijk编译成一个aar再导入, ijk中的文件名是libijkffmpeg.so, 不会有冲突。
@goodcyg @halfhq 谢谢了,是iOS项目,已经统一用ijk里面的ffmpeg了
@Jinxiansen 你应该也是两个SDK同时依赖ffmpeg吧!可以将ijk和另外一个sdk依赖的ffmpeg都去掉,然后自己单独编译ffmpeg添加到项目当中的
@Jinxiansen 还有要注意的是,单独编译ffmpeg时要把所需的参数都配置进去,最好两个sdk依赖的ffmpeg版本都一样,以防ffmpeg的api的变化导致一些问题
@Droid43 你好,你可能没有看清楚我问的, 优酷sdk 依赖的 ffmpeg 是他们修改过的,和ijk的ffmpeg其实有部分代码是不一样了。也就是说2个ffmpeg都需要加入,但是这样ffmpeg的方法又有冲突。😶
@Droid43 你好我也遇到了同样的问题,可以确认的是第三方库和ijkplayer引用的ffmpeg版本不一致引起的。那我怎么知道ijkplayer中ffmpeg的版本号呢,谢谢!
@Droid43 你好,我已经知道ffmpeg的版本号了,我想让ffmpeg的版本同步第三方库的版本,就是编译ijk的时候编译ffmpeg,这样应该怎么做呢?
@goodcyg 请教一下,如何让ijkplayer和ffmpeg分别编译呢。我的SDK里用的是libFFmpeg.a,但是我看ijkplayer里对ffmpeg的引用是libavcodec.a、libavfilter.a等这种样式,如果只是不把这几个.a打进IJKMediaPlayer,使用时也是有冲突的。请大神指点一下
@zhangferry 我建议你修改sdk里东东,来同步libavcodec.a、libavfilter.a... 否则,维护起来是你的噩梦。
@goodcyg 好吧,主要是那个SDK是用的别人的,我这没法改。我试下看能不能让他们那边改一下
@Jinxiansen 两个ffmpeg都引入不可能吧!相同的函数名肯定无法编译通过的,所以必须要将ffmpeg拆分出来。
@zhangferry 编译ijk时保留对ffmpeg的引用路径,删掉导入的a文件就不会把ffmpeg编译进去了
@zhangferry @zhangferry 肯定的需要你们统一用一套?否则,两套同名的api编译时一个问题?编译完了,一套api的.a文件少说也的几十上百兆?两套的多大?
@Droid43 编译时保留ffmpeg的引用路径,怎么操作呢,我看了写资料好像是可以,但是不知道具体怎么做。能不能说的详细一点,我对C了解的比较浅层,或者提供一些具体的参考资料,谢谢了
@Droid43 你好,你可能没有看清楚我问的, 优酷sdk 依赖的 ffmpeg 是他们修改过的,和ijk的ffmpeg其实有部分代码是不一样了。也就是说2个ffmpeg都需要加入,但是这样ffmpeg的方法又有冲突。😶
你的问题解决了吗?我也遇到这个问题了,现在还没有解决
这个问题已经解决了,将IJKMediaFramework重新打包成动态库,就OK,
这个问题已经解决了,将IJKMediaFramework重新打包成动态库,就OK,
我也是打包成动态库,但是另一个sdk是.a,调用时,会崩溃。你会吗
请教下具体怎么打包动态库呢,我现在打包动态库,都报 Undefined symbols for architecture arm64: "_zlibCompileFlags", referenced from: _http_read_header in libavformat.a(http.o) 类似这种错误
打包动态库 能过审吗
单独编译ffmpeg时要把所需的参数都配置进去
请问下这些参数怎么调配,我需要转码功能,我用的 https://github.com/kewlbear/FFmpeg-iOS-build-script 的脚本,已改成和IJK同版本ffmpeg,但是参数调试不对,放到IJK中不适用