在搜索谷歌时,确切有四个条目是关于去交错播放和IJKPlayer的。最好的一个似乎是这。但是,上述解决方案通过添加
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "vf0", "yadif")代码似乎不起作用。当然,当使用ffplay (或ffmpeg)时,这都是关于过滤器是否包括在内。那么,是否有任何可用的解决方案,这些解决方案可以与IJKPlayer脱钩,并告诉您要使用哪些过滤器(在编译时和运行时),这些都是不可靠的?
编辑:
我发现这个播放器是用--禁用-avfilter编译的。我查看了git的最新版本,并使用--启用-avfilter编译了它。现在,目录android/contrib/build/ffmpeg-armv7a/output/lib也包含libavfilter.a。libijkffmpeg.so的大小和运行量都更大。
nm -D --defined-only libijkffmpeg.so显示符号vf_yadif。但是,当使用with选项vf0 0/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发布于 2017-06-29 09:14:34
最后,我找到了解决方案:
这是如何在android上使用与IJKPlayer的去隔行:
git clone https://github.com/Bilibili/ijkplayer.gitexport COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-avfilter"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-filters" `// FIXME: merge filter related code and enable it // remove these lines to enable avfilter #ifdef CONFIG_AVFILTER #undef CONFIG_AVFILTER #endif #define CONFIG_AVFILTER 0`播放机现在通过设置以下设置来支持去交错:
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "vf0", "yadif");这必须在mediaPlayer.start()之前完成。
因为去交错是一项耗费时间的工作,所以我必须使用yadif选项,才能让它在我的设备上很好地运行。我正在和"yadif=2"一起使用它。有关yadif的更多详细信息,请参阅正式的FFmpeg文档。
https://stackoverflow.com/questions/44653926
复制相似问题