在浏览器中启用/禁用同步音轨

Enable/disable simultaneous audio tracks in the browser

本文关键字:同步 音轨 浏览器 启用      更新时间:2023-09-26

我想同步播放多个音轨,并能够在播放时以编程方式启用或禁用音轨。

我尝试将多个音频流放在一个 mp4 文件中,然后设置曲目的启用属性,如下所示:

mySong.audioTracks[n].enabled

但该技术目前仅在IE和Safari中受支持。

这可以通过似乎具有更好浏览器支持的 Web 音频 API 来完成吗?

对于可能的WebAudio解决方案,假设您将mp4文件解码为具有n通道的AudioBufferSources

然后:

var splitter = context.createSplitter(n);
s.connect(splitter);
for (k = 0; k < n; ++k) {
  gains[k] = context.createGain();
  spitter.connect(gains[k], k, 0);
  gains[k].connect(context.destination);
}
// To disable channel m:
gains[m].gain.value = 0;
// To re-enable channel m:
gains[m].gain.value = 1;

您可以通过让每个通道淡入和淡出来变得更花哨。

如果您使用的是HTML5 Audio,则可以使用MDN指南中详述的.play().pause()命令。

假设您有一个包含五个 HTML5 音频元素的页面,每个元素都有类 .song1 。如果要同时停止和启动所有轨道,可以分配按钮以运行:

document.getElementsByClassName("song1").play();

document.getElementsByClassName("song1").pause();
如果您想在其他曲目

继续播放时将曲目静音,您也可以以编程方式将其音量设置为 0:

getElementsByTagName("audio")[0].volume=0; <!-- Mute track 1 -->

getElementsByTagName("audio")[2].volume=0; <!-- Mute track 3 etc -->

希望这有帮助!