Shaka Player动态切换ABR策略后没生效怎么办?
我在用Shaka Player播放自适应码率视频时,想动态切换ABR策略从”balanced”到”aggressive”。按照文档调用了player.configure(‘abr’, { defaultBandwidthMethod: ‘aggressive’ }),但实际播放还是按照原来的方式切换码率,控制台也没有报错。
试过在播放前和播放中都调用过这个方法,还尝试过通过abrManager.explicitlyChooseVariant()手动选择码率,但感觉效果不稳定。有没有人遇到过类似情况?需要怎么确认策略是否生效?
const AbrManager = shaka.player.AbrManager;
player.configure('abr', {
defaultBandwidthMethod: 'aggressive',
bandwidthEstimationMethod: AbrManager.BandwidthEstimationMethod.SIMPLE
});
1.
defaultBandwidthMethod只会在ABR管理器初始化时生效,动态修改可能不起作用。你可以试试直接用bandwidthMethod来覆盖默认值:2. 如果已经开始了播放,单纯改配置可能不够,需要重新初始化ABR管理器。可以这样做:
3. 检查是否真的生效,可以通过
player.getStatistics().bandwidthEstimate查看当前估算的带宽值变化,或者监听variantswitch事件看看切换行为有没有改变。如果还是不行,建议在切换策略后等一会儿再观察,有时候ABR调整不会立即生效。实在不行就重启播放器吧,虽然有点暴力但确实有效。