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

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

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

在其中一种情况下,我遇到了问题,我不想自适应地改变比特率,而是希望它是特定的,即 320 kbps。我正在使用 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);
})();

所以基本上有两个选项:自动和 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)

关于javascript - 如何使用 dash js 音频播放器仅播放特定比特率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809288/

相关文章:

javascript - 使用 jquery ajax 发布到 mongodb

javascript - 在 Confluence 中引用 HTML 中的图像

javascript - Firefox 视频标签 getVideoPlaybackQuality() 不是函数

ffmpeg - 如何修复媒体源扩展错误 : Initialization segment misses expected aac track

javascript - 你能在不播放的情况下获得 webrtc 音频流的音量吗?

javascript - 即使在我运行 MediaStreamTrack.stop() 之后网络摄像头灯仍然亮着

javascript - 不同设备上两个不同HTML文件之间的通信(JS)

javascript - 弹出时为对话框添加自定义动画

encryption - 准备在 EME 中使用的音频文件

javascript - MediaStream 同时捕获 Canvas 和音频