Android 使用IJKPlayer播放时取消交错显示视频
在谷歌搜索IJKPlayer的解交错播放时,共有四个条目。最好的似乎是。然而,上述解决方案通过添加Android 使用IJKPlayer播放时取消交错显示视频,android,video,options,ijkplayer,Android,Video,Options,Ijkplayer,在谷歌搜索IJKPlayer的解交错播放时,共有四个条目。最好的似乎是。然而,上述解决方案通过添加 mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "vf0", "yadif") 对代码的修改似乎不起作用。当然,当使用ffplay(或ffmpeg)时,所有的问题都在于是否包含过滤器。那么,是否有可用的工作解决方案,可以与IJKPlayer分离并告诉(在编译时和运行时)使用哪些过滤器,以防白痴 编辑: 我发现,这个播放器是用--
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "vf0", "yadif")
对代码的修改似乎不起作用。当然,当使用ffplay(或ffmpeg)时,所有的问题都在于是否包含过滤器。那么,是否有可用的工作解决方案,可以与IJKPlayer分离并告诉(在编译时和运行时)使用哪些过滤器,以防白痴
编辑:
我发现,这个播放器是用--disable-avfilter编译的。我从git签出了最新版本,并用--enable-avfilter编译了它。现在,目录android/contrib/build/ffmpeg-armv7a/output/lib也包含libavfilter.a。libijkffmpeg.so在大小和运行方面都更大
nm -D --defined-only libijkffmpeg.so
显示符号vf_yadif。但是,当与选项vf0/yadif一起使用时,IJKPlayer仍然不会解交错
我还为avfilter添加了版本信息:
I/IJKMEDIA: ===== versions =====
I/IJKMEDIA: ijkplayer : k0.8.0
I/IJKMEDIA: FFmpeg : ff3.3--ijk0.8.0--20170518--001
I/IJKMEDIA: libavutil : 55.58.100
I/IJKMEDIA: SDL_RunThread: [32440] ff_msg_loop
I/IJKMEDIA: libavcodec : 57.89.100
I/IJKMEDIA: libavformat : 57.71.100
I/IJKMEDIA: libavfilter : 6.82.100
I/IJKMEDIA: libswscale : 4.6.100
I/IJKMEDIA: libswresample: 2.7.100
最后,我找到了解决方案: 这是如何在android上使用IJKPlayer的逐行扫描:
- 使用从GIT获取IJKPlayer的最新源
git克隆https://github.com/Bilibili/ijkplayer.git
- 在新创建的目录中,转到config
- 打开您喜欢的模块*.sh文件并启用筛选:
export COMMON\u FF\u CFG\u FLAGS=“$COMMON\u FF\u CFG\u FLAGS--enable avfilter”
export COMMON\u FF\u CFG\u FLAGS=“$COMMON\u FF\u CFG\u FLAGS——启用过滤器”
- 现在,转到ijkplayer/ijkmedia并打开config.h。在config.h中删除以下行:
//FIXME:合并与筛选器相关的代码并启用它
//卸下这些线路以启用avfilter
#ifdef CONFIG_AVFILTER
#未定义配置\u AVFILTER
#恩迪夫
#定义配置过滤器0
- 按照README.md中的描述构建播放器
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "vf0", "yadif");
这必须在mediaPlayer.start()之前完成
由于逐行扫描是一项耗时的工作,我不得不使用yadif选项,以便在我的设备上很好地运行它。我将它与
“yadif=2”
一起使用。有关yadif的更多详细信息,请参阅官方FFmpeg文档。我在IJKPlayer源代码中找到了以下文件:./android/contrib/FFmpeg-armv7a/libavfilter/vf_yadif.c./android/contrib/FFmpeg-armv7a/libavfilter/yadif.h我想知道yadif是如何激活的。