问题描述
我想要的
我的目标是允许我网站的用户切换特定视频的活动音轨。 遗憾的是,我没有 Web 开发的背景,也无法弄清楚如何去做。
视频是 mp4 格式,有 3 个不同的音轨(例如,我可以用 vlc 媒体播放器确认)。我想把它放在网站上,并有按钮可以选择三个音轨之一,这样访问者就可以观看视频并在视频运行时选择活动的音轨。
我想做的类似于这篇博文的示例 1 中描述的内容:
https://gingertech.net/2011/05/01/html5-multi-track-audio-or-video/
它使用 HTMLMediaElement 接口,特别是 audioTracks
属性。
不过,这在大多数浏览器中似乎是 to be not implemented,但我还没有设法让它工作。
我的尝试:
- 在 Firefox 中激活功能标志,
media.track.enabled
。这确实使我能够访问myvideo.audioTracks
,但它只返回一个包含 one 单轨的列表,然后我可以对其进行操作。我无法访问超过一首曲目。此外,我希望我的用户无需在浏览器中启用实验性功能即可在音轨之间切换。
var video = document.getElementsByTagName("video");
alert(video.audioTracks.length);
<html>
<head>
<title>Video Test</title>
</head>
<body>
<video controls>
<source src="my-video.mp4" type="video/mp4">
</video>
</body>
var player = videojs('mix');
var audioTrackList = player.audioTracks();
alert audioTrackList.length;
<head>
<link href="https://vjs.zencdn.net/7.10.2/video-js.css" rel="stylesheet" />
</head>
<body>
<video-js
controls
id="mix"
preload="auto"
width="640"
height="264"
data-setup="{}"
>
<source src="my-video.mp4" type="video/mp4" />
</video-js>
</body>
我还没有尝试过的
我已经放弃并将现在尝试的一个想法是从视频中提取音轨并手动将它们附加到 <video-js>
元素(通过 player.audioTracks().addTrack(track)
(参见 here )
相关问题
SO 上已经有不少类似问题的问题,但似乎没有一个解决了我的问题(很多根本没有回答)
- Get MediaStreamTrack(audio) from Video 这个问题的答案提出了使用网络音频 API 将视频音频流式传输到音频元素的解决方案,坦率地说,我不太明白这是如何工作的,所以这可能是一个可行的解决方案,我不知道。
- Multiple audio tracks for HTML5 video 还建议使用网络音频 API。
总结
我想在网页上显示视频,用户可以在视频运行时在其中选择不同的音轨。虽然 HTMLMediaElement.audioTracks 存在,但它似乎没有在许多浏览器中实现,即使在 firefox 设置中激活它,我也不能选择多个音轨。使用 videojs 出现同样的问题。 对 SO 上类似问题的回答建议使用 audioTracks 属性或使用网络音频 api 的一些解决方案。
因此,如果有人可以帮助解释网络音频 api 的解决方案,提出新的解决方案,或者指出我在实验中犯的错误,我会非常高兴。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)