ijkplayer播放器原本是开源比较便捷的播放器,是一个基于FFmpeg的轻量级Android/iOS视频播放器。Ijkplayer框架中,解码方式的选择只有智能硬解(硬解失败,自动转软解)、软解两种,功能上讲,两种方式已够用,但偶尔也有需求让扩展成用户自选的三种解码方式:智能、硬解、软解。
EasyPlayerPro-iOS如何扩展Ijkplayer解码方式?
下面讲解如何在原框架中,扩展出“硬解”的选项,及其失败后对应的消息处理:
1、在 ff_ffplay_options.h 文件下修改“videotoolbox”的最大值,范围由0 ~ 1,扩展到0 ~ 2:
{ "videotoolbox",
"VideoToolbox: enable",
OPTION_OFFSET(videotoolbox),
OPTION_INT(0, 0, 2)
}
2、在工程中创建播放器时,设置options选项,来选择视频的解码方式(默认是软解):
[options setOptionIntValue:1 forKey:@"videotoolbox"
ofCategory:kIJKFFOptionCategoryPlayer];
3、在实现选择解码方式的方法之前,需要先创建一个硬解失败的标志位,通过判断它来决定是否需要发送硬解失败的错误提示:
在 ff_ffpipeline.h 中,修改结构体:IJKFF_Pipeline 添加布尔值 * bool video_decoder_from_ios_videotoolbox_failed;*