我有两首歌,我需要在同一时间播放(在AudioBuffer的索引下面,我通过除以采样率转换为秒),问题是,执行{{1}并且song1.play();
需要大约200毫秒(使用song2.play();
)来执行,这会抛出时间 - 无论如何使用缓冲区或某些JS魔法同时完全播放它们?
答案 0 :(得分:1)
使用网络音频,您可以指定AudioBufferSources的开始时间:
https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start
答案 1 :(得分:0)
我做了一个简单的页面并进行了测试。
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<audio id="player1" controls style="width: 400px;">
<source type="audio/mpeg" src="http://127.0.0.1:8080/1.mp3"></source>
</audio>
<audio id="player2" controls style="width: 400px;">
<source type="audio/mpeg" src="http://127.0.0.1:8080/1.mp3"></source>
</audio>
<script>
var plyr1 = document.getElementById('player1');
var plyr2 = document.getElementById('player2');
</script>
</body>
</html>
我将plyr1.play(); plyr2.play();
放入控制台(firefox)并点击回车。这些声音没有区别!我不知道你的问题是什么,但是你可以尝试plyr1.autoplay = true; plyr2.autoplay = true;
,这不是一个功能,因为经验说应该花费更少的时间;)
啊哈,如果您使用new Audio()
,则应注意使用new
关键字会导致javascript变慢。避免它,而是使用document.createElement('audio')
。