Ijkplayer增加录制截屏

2024-04-04

需求:在ijkplayer的基础上面增加视频录制和截屏功能,主要用于rtsp实时流播放。

参考项目:https://github.com/zhu528/ijkplayer-record

  1. 先下载ijkplayer源码(k0.8.8-43-g30eb9441)
  2. 参考项目ijkplayer-record替换部分代码(替换文件的时候使用root用户,否则会替换失败)
  3. 再次编译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

androidcodeijkplayer

车哥

咸蛋超人一枚.

极空间搭建Minio服务

Docker编译ijkplayer