是否可以同时播放整个音频实例?
我知道,我可以每次创建一个新实例并在每个实例上调用.play(),但我认为它很脏。喜欢
sound1 = new Audio('sound1.mp3');
sound2 = new Audio('sound2.mp3);
sound1.play();
sound2.play;
它或多或少与这个帖子相同:Play multiple sound at the same time 但必须有优雅的方式吗?
编辑:MediaController
和mediagroup
原来是蒸发器。你会想要坚持“肮脏”的方式去做,至少现在,因为没有正式的同步解决方案。
同步播放多个音频或视频对象的正确方法是使用mediagroup
属性和相应的MediaController
对象。请参阅文章"HTML5 multi-track audio or video":
可以在标记中添加名为@mediagroup的n属性以将多个媒体元素一起从属。这是通过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 page,controller Property page,play() Method page和the standard)
注意:我没有测试上面的代码;请注意,如果您确认此代码不符合标准且无法按预期运行,请告知我们。请注意,您正在研究HTML5标准的一个非常新的方面,在这种情况下,不要期望广泛的浏览器兼容性。 (截至2014年1月)