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

How to play only specific bitrate with dash js audio player?

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

在其中一种情况下,我遇到了问题,我不想自适应地改变比特率,而是想具体一点,即 320 kbps。我正在使用 dash.js 库中提供的方法,因为 following.But 无法为我的整个音频文件获取静态比特率段。

(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);
})();

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

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

对于后面的场景,我遇到了这个问题。

有什么方法可以做到吗?我在这里遗漏了什么吗?

它没有设置比特率,因为它正在对比特率进行精确匹配。

目前dash.js的码率设置方法如下

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

带宽可能会发生变化,例如 321684,这将生成比特率值 = 321。在这种情况下,您必须执行 player.setInitialBitrateFor('audio', 321); 会起作用

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

player.setQualityFor('audio', indexValue);

考虑到有三个适应集并且

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