Javascript音频 - 寻找另一个位置,当在一个位置
问题描述:
我有一个<audio>
元素,通过歌曲播放。当歌曲达到特定点时,我希望它能够无缝地寻找另一个特定点并继续播放。Javascript音频 - 寻找另一个位置,当在一个位置
首先,我很开放,我正在寻找关于哪个是最好的音频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>
答
我想你想使用的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
您抵消秒。
谢谢你。我有点困惑,因为我可以如何连锁。例如,如果歌曲开始播放,我希望它从1秒跳到7秒,播放到10秒,然后跳到12秒,然后继续播放,如何实现? 我正在处理一个音频文件。从你给我的例子来看,这是不是播放这首歌,但是当它到达'endOffsetInSeconds'时,它刚刚从头开始? – Toby
我一定误解了你的问题。让我再看看 –
老实说,我认为最简单的做法是从原件中创建一个新的音频文件,并将这些部分剪掉。你可以尝试[大胆](http://www.audacityteam.org/) –