问题如何在初始化流之前用正确的质量初始化dash.js?
问题:在使用dash.js设置质量时,当播放开始时,我会得到绿色工件(见下图)。通过响应STREAM_INITIALIZED事件,在流初始化后设置质量。

上下文:,我正在尝试创建一个带有破折号的应用程序,用户应该能够选择播放质量。此选择将通过使用如下所示的cookie来设置:cookies.set('preferredQuality', quality.value);,其中值对应于0、1、2或3(在dash.js中设置,setQualityFor和setAutoSwitchQualityFor设置为false)。
然后,在创建破折号实例的逻辑中,我侦听STREAM_INITIALIZED事件并尝试在那里设置质量。
this.dashJsInstance.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED, this.onStreamInitialized, this);
onStreamInitialized: function() {
const quality = cookies.get('preferredQuality');
if (quality !== -1) {
this.dashJsInstance.setAutoSwitchQualityFor('video', false);
this.dashJsInstance.setQualityFor('video', quality);
}
},
这将导致图像中显示的绿色伪影。
发布于 2019-04-05 17:46:46
不确定这是否是正确的答案,但通过侦听onFragmentLoaded事件解决了这个问题。这绝不是最好的答案,但有效。我们通过这样的操作来实现它:
onFragmentLoaded: function(e) {
if (e.request && e.request.type === 'InitializationSegment') {
const preferredQuality = quality // Preferred quality;
const currentQuality = current // Current quality;
if (currentQuality !== preferredQuality) {
this.dashJsInstance.setQualityFor('video', preferredQuality);
this.dashJsInstance.setAutoSwitchQualityFor('video', false);
}
}
},https://stackoverflow.com/questions/52035242
复制相似问题