如何使用dash js音频播放器只播放特定的比特率?

时间:2017-03-15 12:05:36

标签: javascript media-source mediastream adaptive-bitrate dash.js

我正在使用dash.js库并使用DASH协议为我的音频播放器实现自适应比特率。

我在其中一种情况下遇到问题,当我不是自适应地改变比特率时,我希望它是特定的,即320kbps。我正在使用dash.js库中提供的方法如下。但是无法为我的整个音频文件获取静态比特率段。

(function () {
    var url = "https://xxxxxxxxxxxx.xxxxxxxx.net/myplaylist.mpd";
    var player = dashjs.MediaPlayer().create();
    player.initialize(document.querySelector("#audioPlayer"), url, true);
    player.setInitialBitrateFor('audio', 320);
    player.setQualityFor('audio', 320);
    player.setAutoSwitchQualityFor('audio', false);
    player.getDebug().setLogToBrowserConsole(false);
})();

所以基本上有两个选项:: auto和320kbps

auto将允许自适应比特率,但在此之后的任何时间选择320 kbps时,它应该只获得该比特率的段。

对于后一种情况,我正面临这个问题。

有没有办法做到这一点?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

它没有设置比特率b'因为它正在进行比特率的精确匹配。

截至目前,使用dash.js设置的比特率如下:

首先执行player.setInitialBitrateFor('audio', 320);时,它将从mpd文件中获取带宽。 然后有一个内部机制,它将带宽除以1000然后再舍入该值。所以,因为如果您的mpd文件包含像bandwidth =" 320000"这样的值, 那么player.setInitialBitrateFor('audio', 320);就可以了。

可能会出现像321684这样的带宽变化,这会产生比特率值= 321.在这种情况下你必须做 player.setInitialBitrateFor(' audio',321); 会工作

setQualityFor 方法将index作为第二个参数。 所以可以做到

player.setQualityFor('audio', indexValue);

考虑有三个适应集和

low bitrate (64 kbps)     ==> 0 (indexValue)
Medium bitrate (128 kbps) ==> 1 (indexValue)
High bitrate (320 kbps)   ==> 2 (indexValue)