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

时间:2016-03-07 18:12:55

标签: javascript html audio web-audio

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

我尝试将多个音频流放在一个mp4文件中,然后像这样设置轨道的启用属性:

mySong.audioTracks[n].enabled

但是这种技术目前在IE和Safari中只有supported

这可以通过Web Audio API完成吗,它似乎有更好的浏览器支持?

2 个答案:

答案 0 :(得分:1)

对于可能的WebAudio解决方案,假设您将mp4文件解码为AudioBufferSourcesn个频道。

然后:

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;

您可以通过让每个频道淡入淡出来获得更好的效果。

答案 1 :(得分:0)

如果您使用的是HTML5 Audio,则可以使用MDN's guide中详述的.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 -->

希望这有帮助!