需求:在ijkplayer的基础上面增加视频录制和截屏功能,主要用于rtsp实时流播放。
参考项目:https://github.com/zhu528/ijkplayer-record
- 先下载ijkplayer源码(k0.8.8-43-g30eb9441)
- 参考项目ijkplayer-record替换部分代码(替换文件的时候使用root用户,否则会替换失败)
- 再次编译ijkplayer即可,编译可参考之前的写的文章
修改的文件
修改的源码已经上传github:https://github.com/chezi008/AFPlayer/tree/master/ijksrc
/ijkplayer-android/config/module-lite.sh
/ijkplayer-android/ijkmedia/ijkplayer/ff_ffplay.c
/ijkplayer-android/ijkmedia/ijkplayer/ff_ffplay.h
/ijkplayer-android/ijkmedia/ijkplayer/ff_ffplay_def.h
/ijkplayer-android/ijkmedia/ijkplayer/ijkplayer.c
/ijkplayer-android/ijkmedia/ijkplayer/android/ijkplayer_jni.c
/ijkplayer-android/ijkmedia/ijkplayer/Android.mk
编译后版本信息
===== versions =====
k0.8.8-43-g30eb9441
ff4.0--ijk0.8.8--20210426--001
libavutil : 56.14.100
libavcodec : 58.18.100
libavformat : 58.12.100
libswscale : 5.1.100
libswresample: 3.1.100
遇到的问题
编译ffmpeg4.0的时候 Unknown option “–disable-ffserver”
将config/module.sh中的
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda" 和
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"注释了就可以了
在使用ijkplayer播放实时流的时候出现 Invalid data found when processing input
config/module.sh需要添加对应参数
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=h264"
ffmpeg ff3.4–ijk0.8.7–20180103–001 arm64位手机播放流闪退的问题:
00 pc 00000000002d67fc /data/app/com.us.thinkdiag-l5SNCHhp38PRtvXykaWGwA==/lib/arm64/libijkffmpeg.so (av_opt_next+24) 解决办法:编译ijk的时候编译最新的版本就行,这个问题属于已经修复过的问题了,不要git checkout -B latest k0.8.8 操作就行。
https://github.com/bilibili/ijkplayer/commit/e99d640e5fe94c65132379307f92d7180bcde8e7
ijkplayer: convert pointer to string instead of using av_dict_set_int
播放rtsp流(h264+pcma)的时候录制mp4出现错误:Could not find tag for codec pcm_alaw in stream #1, codec not currently supported in container
原因是因为mp4容器是不支持h264+pcm的封装的,解决办法:把mp4后缀名称改为.mov