ijkplayer遇到的问题合集

最有用的操作须知:https://github.com/bilibili/ijkplayer

问题

问题一:./compile-ffmpeg.sh提示 error: ‘y0000000’ undeclared (first use in this function)

原因:termbits.h里面定义了#B0 0000000,所以ffmpeg里面的B0就会变成000000.
解决方法一:将ffmpeg里面所有的B0改成小写
解决方法二:将系统文件里面的#B0注释掉之后再编译
目前使用方法一,编译和使用正常,暂时没看到其他问题。具体改了
\ijkplayer-master\android\contrib\ffmpeg-arm64\libavcodec的opus_pvq.c和hevc_mvs.c,将B0替换成b0
参考:
http://alientechlab.com/how-to-build-ffmpeg-for-android/
https://www.cnblogs.com/bbqzsl/p/7851356.html

问题二:修改ijkplayer的源码后重新编译没有更改成功的感觉

原因:为了缩短编译时间,编译的时候没有编译全版本,是指定了特殊版本来编译的。具体指令:

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh arm64

问题就出在最后一句,arm64。确实成功编译了arm64版本,但我是在安卓上进行测试,安卓通用版本是armv7a,前面编译的时候会有提示可以支持的版本。

FF_ALL_ARCHS = armv5 armv7a arm64 x86 x86_64
FF_ACT_ARCHS = armv5 armv7a arm64 x86 x86_64

解决方法:以后不熟系的情况下还是全编译妥当,不然浪费调试时间。另外编译的时候最好增加一些日志,通过日志判断是否真的修改成功,另外可以看app调用的so包的修改时间得知。
编译后的so包路径:
在这里插入图片描述
例程实际调用so包的路径:
例程实际调用so包的路径
从两张图片可以看出我弄错了so包的版本,安卓调用的是armv7a,我编译的是arm64,so包的更新时间也不是一致的。正确的情况下,ijkplayer-example会复制对应版本的so包到当前目录下。
另外,写日志判断的话,可以加在ff_play.c文件read_thread函数下,下面两种形式的日志都能显示。

/* this thread gets the stream from the disk or the network */
static int read_thread(void *arg)
{
	av_log(NULL, AV_LOG_ERROR, "test.\n");
	ALOGI("test ALOGI");

问题三:使用module-default.sh编译下,./compile-ffmpeg.sh 后提示:fallfatal error: linux/perf_event.h: No such file or directory

在这里插入图片描述
原因:linux/perf_event.h是linux平台的效能优化工具,有些Linux没有,禁用即可,没有影响。在module-lite.sh里面已经禁用了。
解决方法:在ijkplayer-master\config\module-default.sh里加入

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

然后再次执行前面的操作

cd config
rm module.sh
ln -s module-default.sh module.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh arm64

参考:https://github.com/Bilibili/ijkplayer/issues/4043
   https://www.jianshu.com/p/be622d6ad865

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值