如何在播放期间切换音轨
Posted
技术标签:
【中文标题】如何在播放期间切换音轨【英文标题】:How can I switch audio track during playback 【发布时间】:2015-04-21 11:00:01 【问题描述】:我使用 dash.js 将以下清单中的内容加载到 html5 视频中:MPD file。它包含一个视频和四个音轨。我试图弄清楚如何枚举和启用/禁用可用的不同音轨。
我了解,如果将它们作为 TRACK
元素添加到 VIDEO
元素中,我可以通过 video.audioTracks
启用/禁用它们,但这是不可能的,因为它们是从清单加载的。
任何关于我如何解决这个问题的指针将不胜感激。
【问题讨论】:
我发现根本不需要<track>
元素;只需 <video>
和 <source>
,我就能够成功地操纵 video.audioTracks[i].enabled
来切换 Jeoffrey Mendez 回答的声音轨道。浏览器支持 is abysmal,但是,据称截至 2018 年 2 月,Safari 和 IE 衍生产品仍仅支持。
【参考方案1】:
videoObject.audioTracks[audioTrackIndex].enabled = true;
【讨论】:
虽然这可能会解决问题,但请始终说明您所提议的内容为何有效。代码本身不可搜索。 大多数浏览器尚不支持audioTracks。有没有其他办法?【参考方案2】:以下是获取可用品质列表的方法:
// assuming player is the instance of MediaPlayer
var metricsExt = player.getMetricsExt();
var num_qualities = metricsExt.getMaxIndexForBufferType('audio', 0 /*that's the period index*/);
var qualities = [];
for (var i = 0; i < num_qualities; i++)
qualities.push(metricsExt.getBandwidthForRepresentation(i+1));
然后如果用户选择另一种质量:
player.setQualityFor('audio', newQualityIdx);
// newQualityIdx is the 0-based index of the chosen quality
您可能还想关闭auto-switch-quality
,以防用户手动选择质量:
player.setAutoSwitchQuality(false);
【讨论】:
感谢您的回复,但这并不是我所追求的。我想在四个音频 AdaptationSet 之间进行选择。现在 dash.js 将选择第一个可用的,在这种情况下是丹麦语(第 16 行)。除了拦截清单并在将其提供给播放器之前删除不需要的音轨之外,我还没有找到任何其他方法。问题是;如果我想更改音轨,我必须重新解析 ofc 重置流的清单:(以上是关于如何在播放期间切换音轨的主要内容,如果未能解决你的问题,请参考以下文章