Web音频API:完美循环如何

时间:2015-06-29 12:23:24

标签: javascript audio web

当播放文件作为循环时,仍然有一个"音频空白"在结束和开始之间。 我怎么能避免这个?为了获得连续的声音。感谢

2 个答案:

答案 0 :(得分:2)

https://jsfiddle.net/0xkt1uto/1/

当第一个> 98%完成时,第二个将开始。

当第二个> 98%完成时,第一个将开始。

当他们结束时,他们将重置为0,为下一场比赛做好准备。

守则:

HTML

<audio id="aud1" controls>
  <source src="http://www.noiseaddicts.com/samples_1w72b820/4205.mp3" type="audio/ogg">
</audio>

<audio id="aud2" controls>
  <source src="http://www.noiseaddicts.com/samples_1w72b820/4205.mp3" type="audio/ogg">
</audio>

JS&amp; jQuery的

var aud1 = $('#aud1').get(0);
var aud2 = $('#aud2').get(0);

aud1.play();

$(aud1).on('timeupdate', function(){
    if((this.currentTime/this.duration)*100 > 98){
     aud2.play();
    }
});

$(aud2).on('timeupdate', function(){
   if((this.currentTime/this.duration)*100 > 98){
     aud1.play();
    }
});

$(aud1).on('ended', function(){
    this.currentTime = 0;
});

$(aud2).on('ended', function(){
    this.currentTime = 0;
});

答案 1 :(得分:0)

<audio>乒乓球技术通常有效,但有时不起作用,具体取决于机器的速度,以及页面的其余部分。

使用Web Audio API更加强大。考虑到您已使用(例如)和XMLHttpRequestArrayBuffer下载的音频文件下载到buf var ac = new AudioContext(); ac.decodeAudioData(b).then(function(decoded) { var source = new AudioBufferSourceNode(ac, {buffer: decoded, loop: true}); source.connect(ac.destination); source.start(); // source.stop(); // to stop; }).catch(function(e) { // error ? });

{{1}}