IJKPlayer的优化项

1、缩短首帧探测时间

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probesize", 1024*16); // 默认值较大,调整为16KB

2、禁用缓冲

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0); // 禁用网络缓冲:

3、限制最大缓冲区

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", 1024*256); // 256KB缓冲阈值

4、分片数据预缓存

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);

5、连接复用配置

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "reconnect", 1); // 网络波动时自动重连

6、开启硬件加速

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1); ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);

7、动态调整帧率阀值,丢帧策略

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 30)

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 5)

8、‌带宽与延迟监测

ijkMediaPlayer.setOnInfoListener((mp, what, extra) -> { if (what == IMediaPlayer.MEDIA_INFO_BUFFERING_START) { // 触发网络降级策略 } else if (what == IMediaPlayer.MEDIA_INFO_BUFFERING_END) { // 恢复高帧率模式 } return true; });

9、连续检测到3个I帧解码失败时,触发GOP级丢弃 ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "gop_max_decode_failures", 3)

10、启用解码前丢帧策略

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值