具有一定质量的Init dash.js

时间:2018-08-27 08:19:23

标签: javascript dash.js

问题 在初始化流之前,如何以正确的质量初始化dash.js?

问题: 在使用dash.js设置质量时,播放开始时出现绿色伪影(请参见下图)。在流初始化之后,通过响应STREAM_INITIALIZED事件来设置质量。 Green artifacts

上下文:我正在尝试创建一个带有破折号的应用程序,用户应可以在其中选择播放质量。可以通过使用如下的Cookie来设置此选择:cookies.set('preferredQuality', quality.value);,其中值对应于0、1、2或3(在dash.js中设置了setQualityForsetAutoSwitchQualityForfalse)。

然后,在创建破折号实例的逻辑中,我监听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);
  }
},

这会导致图像中显示绿色伪像。

1 个答案:

答案 0 :(得分:0)

不确定这是否是正确的答案,但可以通过监听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);
        }
    }
},