2016-04-19 4 views
1

Wenn ich das 'loop'-Attribut auf dem html5-Audioelement verwende, scheint es eine Lücke zu geben, wenn das Lied wiederholt wird. Gibt es eine einfache Möglichkeit, diese Lücke zu entfernen?Wie kann ich die Lücke entfernen, wenn das Lied im HTML-Audio-Tag wiederholt wird?

Code:

<audio controls loop preload> 
    <source src="http://www.phatdrumloops.com/audio/wav/ifineededs.wav" type="audio/wav"> 
Your browser does not support the audio element. 
</audio> 

Geige Beispiel arbeiten:

https://jsfiddle.net/rmwumaz7/

Antwort

2

Dies ist tatsächlich ein Problem, das durch den Audio-Tag. Sie können jedoch versuchen, den Effekt zu minimieren, indem sie so etwas wie dies zu tun:

var audio = new Audio('http://www.phatdrumloops.com/audio/wav/ifineededs.wav') 
audio.addEventListener('timeupdate', function(){ 
      var buffer = .1 
      if(this.currentTime > this.duration - buffer){ 
       this.currentTime = 0 
       this.play() 
      }}, false); 
audio.play() 

bearbeiten: Nach Ihren Kommentaren, ich habe ein wenig tiefer gegraben. Dies ist, was ich gefunden habe: https://github.com/Hivenfour/SeamlessLoop

Problem hier ist, Sie in ms die richtige Länge der Strecke zur Verfügung stellen müssen (die Spur, die Sie Schleife wollen)

hier eine Geige sehen.

+0

Das schien nicht zu helfen, ich versuchte es diesmal mit einer .wav-Datei in Kombination mit Ihrer Lösung: https://jsfiddle.net/rmwumaz7/3/ –

+0

Mhm. Um ehrlich zu sein, ich habe absolut keine Verzögerung. Perfekte Schleife auf meinem Mac. – Christian

+0

Ich habe wie eine 200ms Verzögerung zwischen ihnen, fast perfekt, aber immer noch merke ich die Lücke. Und das merkt man, wenn man versucht, mit einer Gitarre Noten darüber zu spielen. –