html5 / javascript音频同时播放多个曲目

时间:2014-01-09 09:48:19

标签: javascript jquery html5 audio web-audio

是否可以同时播放整个音频实例?
我知道,我可以每次创建一个新实例并在每个实例上调用.play(),但我认为它很脏。 像
sound1 = new Audio('sound1.mp3');
sound2 = new Audio('sound2.mp3);
sound1.play();
sound2.play;

它或多或少与此主题相同:Play multiple sound at the same time
但必须有优雅的方式吗?

1 个答案:

答案 0 :(得分:4)

修改:MediaControllermediagroup原来是蒸发器。你会想要坚持使用“肮脏”的方式,至少目前是这样,因为没有正式的同步解决方案。

同步播放多个音频或视频对象的正确方法是使用mediagroup属性和相应的MediaController对象。请参阅文章"HTML5 multi-track audio or video"

  

[A] n可以在标记中添加名为@mediagroup的属性,以将多个媒体元素连接在一起。这是通过MediaController对象在JavaScript API中管理的,该对象为组合的多轨道对象提供事件和属性。

将两个音频文件设置为单个mediagroup。将媒体元素分配给mediagroup时,会为该组创建MediaController。在该控制器上使用play()方法,组中的所有媒体元素将同步播放。

以编程方式,您可以像这样分配mediagroup,然后从那一点触发play()来自任何一个从属媒体元素的MediaController,如下所示:

sound1 = new Audio('sound1.mp3');
sound2 = new Audio('sound2.mp3');
sound1.mediaGroup = 'soundGroup';
sound2.mediaGroup = 'soundGroup';
sound1.controller.play();

(来源:w3school.com的HTML音频/视频DOM mediaGroup Property pagecontroller Property pageplay() Method pagethe standard

注意:我没有测试过上面的代码;请注意,如果您确认此代码不符合标准且无法按预期运行,请告知我们。请注意,您正在考虑HTML5标准的一个非常新的方面,在这种情况下,不要期望广泛的浏览器兼容性。 (截至2014年1月)