ijkplayer icon indicating copy to clipboard operation
ijkplayer copied to clipboard

ijk与项目中的ffmpeg冲突问题

Open Droid43 opened this issue 7 years ago • 21 comments

项目中原本使用的有ffmpeg,导入ijk的时候会编译失败,如何让ijk和原来的项目都使用同一个ffmpeg的静态库?

Droid43 avatar Jun 20 '17 10:06 Droid43

首先你的下载ijk支持的ffmpeg库,然后编译其对应.h 和.a 文件,IJKMediaPlayer中在引入的ffmpeg库 ,你的项目中在使用IJKMediaPlayer中在引入的ffmpeg库 即可,否则有可能因为接口变化,报出一大堆错误。在编译的时候注意选择和项目中对应的宏编译参数。

goodcyg avatar Jun 20 '17 12:06 goodcyg

是Android项目么? 将ijk编译成一个aar再导入, ijk中的文件名是libijkffmpeg.so, 不会有冲突。

halfhq avatar Jun 22 '17 03:06 halfhq

@goodcyg @halfhq 谢谢了,是iOS项目,已经统一用ijk里面的ffmpeg了

Droid43 avatar Jun 27 '17 08:06 Droid43

@Jinxiansen 你应该也是两个SDK同时依赖ffmpeg吧!可以将ijk和另外一个sdk依赖的ffmpeg都去掉,然后自己单独编译ffmpeg添加到项目当中的

Droid43 avatar Aug 09 '17 05:08 Droid43

@Jinxiansen 还有要注意的是,单独编译ffmpeg时要把所需的参数都配置进去,最好两个sdk依赖的ffmpeg版本都一样,以防ffmpeg的api的变化导致一些问题

Droid43 avatar Aug 09 '17 05:08 Droid43

@Droid43 你好,你可能没有看清楚我问的, 优酷sdk 依赖的 ffmpeg 是他们修改过的,和ijk的ffmpeg其实有部分代码是不一样了。也就是说2个ffmpeg都需要加入,但是这样ffmpeg的方法又有冲突。😶

Jinxiansen avatar Aug 11 '17 01:08 Jinxiansen

@Droid43 你好我也遇到了同样的问题,可以确认的是第三方库和ijkplayer引用的ffmpeg版本不一致引起的。那我怎么知道ijkplayer中ffmpeg的版本号呢,谢谢!

zhangferry avatar Aug 18 '17 03:08 zhangferry

@Droid43 你好,我已经知道ffmpeg的版本号了,我想让ffmpeg的版本同步第三方库的版本,就是编译ijk的时候编译ffmpeg,这样应该怎么做呢?

zhangferry avatar Aug 18 '17 03:08 zhangferry

@goodcyg 请教一下,如何让ijkplayer和ffmpeg分别编译呢。我的SDK里用的是libFFmpeg.a,但是我看ijkplayer里对ffmpeg的引用是libavcodec.a、libavfilter.a等这种样式,如果只是不把这几个.a打进IJKMediaPlayer,使用时也是有冲突的。请大神指点一下

zhangferry avatar Aug 18 '17 04:08 zhangferry

@zhangferry 我建议你修改sdk里东东,来同步libavcodec.a、libavfilter.a... 否则,维护起来是你的噩梦。

goodcyg avatar Aug 18 '17 06:08 goodcyg

@goodcyg 好吧,主要是那个SDK是用的别人的,我这没法改。我试下看能不能让他们那边改一下

zhangferry avatar Aug 18 '17 09:08 zhangferry

@Jinxiansen 两个ffmpeg都引入不可能吧!相同的函数名肯定无法编译通过的,所以必须要将ffmpeg拆分出来。

Droid43 avatar Aug 19 '17 01:08 Droid43

@zhangferry 编译ijk时保留对ffmpeg的引用路径,删掉导入的a文件就不会把ffmpeg编译进去了

Droid43 avatar Aug 19 '17 01:08 Droid43

@zhangferry @zhangferry 肯定的需要你们统一用一套?否则,两套同名的api编译时一个问题?编译完了,一套api的.a文件少说也的几十上百兆?两套的多大?

goodcyg avatar Aug 19 '17 01:08 goodcyg

@Droid43 编译时保留ffmpeg的引用路径,怎么操作呢,我看了写资料好像是可以,但是不知道具体怎么做。能不能说的详细一点,我对C了解的比较浅层,或者提供一些具体的参考资料,谢谢了

zhangferry avatar Aug 21 '17 06:08 zhangferry

@Droid43 你好,你可能没有看清楚我问的, 优酷sdk 依赖的 ffmpeg 是他们修改过的,和ijk的ffmpeg其实有部分代码是不一样了。也就是说2个ffmpeg都需要加入,但是这样ffmpeg的方法又有冲突。😶

你的问题解决了吗?我也遇到这个问题了,现在还没有解决

yscMichael avatar Nov 02 '20 08:11 yscMichael

这个问题已经解决了,将IJKMediaFramework重新打包成动态库,就OK,

yscMichael avatar Nov 04 '20 01:11 yscMichael

这个问题已经解决了,将IJKMediaFramework重新打包成动态库,就OK,

我也是打包成动态库,但是另一个sdk是.a,调用时,会崩溃。你会吗

KingsleyChen123 avatar Jan 13 '22 10:01 KingsleyChen123

请教下具体怎么打包动态库呢,我现在打包动态库,都报 Undefined symbols for architecture arm64: "_zlibCompileFlags", referenced from: _http_read_header in libavformat.a(http.o) 类似这种错误

CSZRZ avatar Jul 19 '22 16:07 CSZRZ

打包动态库 能过审吗

yonsjl avatar Jun 15 '23 01:06 yonsjl

单独编译ffmpeg时要把所需的参数都配置进去

请问下这些参数怎么调配,我需要转码功能,我用的 https://github.com/kewlbear/FFmpeg-iOS-build-script 的脚本,已改成和IJK同版本ffmpeg,但是参数调试不对,放到IJK中不适用

yonsjl avatar Jun 15 '23 01:06 yonsjl