我有一个正在播放歌曲的<audio>
元素。当歌曲到达一个非常具体的点时,我希望它能够无缝地寻找另一个特定的点并继续播放。
首先,我是开放的,我正在寻找方向,以确定哪个是用于实现此目的的最佳音频API,无论是DOM Audio Object还是(新)Web Audio API。
设置事件监听器的最佳方法是在歌曲中的某个点触发(如果可能)?我应该播放歌曲并保留一个单独的计时器(但它应该是异步的)?
下面我有一个基本的例子。该示例应播放,但随后在音频中的特定点,它应无缝跳过并继续播放。
感谢您的帮助!
$('#player')[0].play();
//$('#player')[0].currentTime = 0.5;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<audio controls id="player">
<source src="https://www.w3schools.com/html/horse.ogg" type="audio/ogg">
<source src="https://www.w3schools.com/html/horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
答案 0 :(得分:0)
我认为您希望使用Web Audio API
来获得对音频的更多控制权。
以下是来自MDN的一些代码:
function getData() {
source = audioCtx.createBufferSource();
request = new XMLHttpRequest();
request.open('GET', 'yourfilehere.wav', true);
request.responseType = 'arraybuffer';
request.onload = function() {
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer) {
myBuffer = buffer;
source.buffer = myBuffer;
source.connect(audioCtx.destination);
source.loop = true;
source.loopEnd = //your endOffsetInSeconds
},
function(e){"Error with decoding audio data" + e.err});
}
request.send();
}
您如何获取我们的数据取决于您,但重要的是将您的source.loop
设置为true,将source.loopEnd
设置为您的偏移量。