2016-03-07 55 views
0

我想同时播放多个音轨并同时播放,并且可以在播放时以编程方式启用或禁用音轨。启用/禁用浏览器中的同步音轨

我试图把多个音频流在一个mp4文件,然后设置一个跟踪的这样enabled属性:

mySong.audioTracks[n].enabled 

但该技术目前只在IE和Safari supported

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

回答

0

如果您使用的是HTML5 Audio,则可以使用.play().pause()命令,详见MDN's guide

比方说,您有一个包含5个HTML5音频元素的页面,每个HTML元素的类别为.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 --> 

希望这有助于!

+0

这种技术的问题在于不能保证曲目将开始并保持同步。 – Duvrai

+0

我从来没有使用过这种方法,所以我不知道它的缺点。什么会导致音频不同步? – luc122c

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; 

您可以通过在以各信道衰落更大胆的尝试,并淡出了。