我希望同步播放多个音轨,并且能够在播放时以编程方式启用或禁用曲目。
我尝试将多个音频流放在一个mp4文件中,然后像这样设置轨道的启用属性:
mySong.audioTracks[n].enabled
但是这种技术目前在IE和Safari中只有supported。
这可以通过Web Audio API完成吗,它似乎有更好的浏览器支持?
答案 0 :(得分:1)
对于可能的WebAudio解决方案,假设您将mp4文件解码为AudioBufferSource
,s
,n
个频道。
然后:
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 -->
希望这有帮助!