/////播放前的探测Size,默认是1M, 改小一点会出画面更快
[_options setFormatOptionIntValue:1024 * 16*0.5 forKey:@"probsize"];
//播放前的探测时间
[_options setFormatOptionIntValue:50000 forKey:@"analyzeduration"];
//软解,更稳定,硬件解码CPU消耗低,
[_options setPlayerOptionIntValue:0 forKey:@"videotoolbox"];
//解码参数,画面更清晰
[_options setCodecOptionIntValue:IJK_AVDISCARD_DEFAULT forKey:@"skip_loop_filter"];
[_options setCodecOptionIntValue:IJK_AVDISCARD_DEFAULT forKey:@"skip_frame"];
/// 最多缓存
[_options setCodecOptionIntValue:3000 forKey:@"max_cached_duration"];
/// 无限读
[_options setPlayerOptionIntValue:1 forKey:@"infbuf"];
/// 关闭播放缓冲
[_options setPlayerOptionIntValue:0 forKey:@"packet-buffering"];
/// framedrop 是在视频帧处理不过来的时候丢弃一些帧达到同步的效果
[_options setPlayerOptionIntValue:5 forKey:@"framedrop"];
//最大fps
[_options setPlayerOptionIntValue:30 forKey:@"max-fps"];
/// 帧速率(fps)
[_options setPlayerOptionIntValue:29.97 forKey:@"r"];
遇到的问题
1达不到秒开,首屏显示慢,后来把播放前探测时间改为1,
2音画不同步,有同事发现在模拟器的情况下音画不同步,刚开始理解以为是CPU处理画面处理不过来,所以加了framedrop参数 做了丢帧处理,后来才明白是因为模拟器处理效率低,不需要做丢帧处理,
目前我使用的参数是
// //播放前的探测时间
[_options setFormatOptionIntValue:1 forKey:@"analyzeduration"];
//解,更稳定
[_options setPlayerOptionIntValue:1 forKey:@"videotoolbox"];