2015-06-19 5 views
8

Es scheint, als ob ich kein lückenloses Looping mit dem Handy erreichen kann. Das ist, was ich bisher getan habe:Wie kann ich lückenloses Audio-Looping mit dem mobilen Browser durchführen?

https://github.com/Hivenfour/SeamlessLoop

  • eine Lücke schafft.

http://www.schillmania.com/projects/soundmanager2/demo/api/

  • entsteht eine Lücke.

https://github.com/regosen/Gapless-5

  • entsteht eine Lücke.
  • Downloads gleichen Audio zweimal.

https://github.com/floatinghotpot/cordova-plugin-nativeaudio

  • entsteht eine Lücke.

HTML5 Audio-

  • Erstellt eine Lücke.

Cordova Medien Plugin

  • Erstellt eine Lücke.

WebAudio

Alle oben mit mp3 und ogg getestet.

EDIT:

SoundJS des cordova Plugin ist gebrochen und damit nicht funktioniert;

https://github.com/CreateJS/SoundJS/issues/170

+1

können Sie eine zweite Kopie laden, spielen Sie die 1., beobachten Sie die Position, und spielen Sie die 2. ~ 200ms vor dem 1. endet. Vielleicht müssen Sie die Verzögerung optimieren oder vielleicht aus einem Benchmark berechnen ... – dandavis

+0

Ich fürchte, das und Crossfading scheint die einzig mögliche Lösung zu sein. Ihr Vorschlag hat Probleme, wenn die Verzögerung nicht für alle Plattformen und Geräte gleich ist. Crossfading ist gut für bestimmte Sounds, aber sehr schlecht für andere. – unska

+0

yeah, Sie können wahrscheinlich die Verzögerung/Verzögerung mit einer stillen Spur messen, aber Sie haben Recht, es wird nicht perfekt sein. es könnte passierbar oder besser als nichts oder ein heißes Telefon sein ... Es gibt auch das Problem der nachträglichen Stille, die mit CORS und API umgehen kann, um den Schwanz zu laden und den letzten hörbaren Inhalt zu finden. – dandavis

Antwort

3

Mit HTML5 Wenn Sie HTML5 verwenden, verwenden Sie das Attribut loop.

<audio controls loop> 
    <source src="horse.ogg" type="audio/ogg"> 
    <source src="horse.mp3" type="audio/mpeg"> 
Your browser does not support the audio element. 
</audio> 

Es ist nicht Lücke schafft, überprüfen Sie mit Ihrem Audio-Datei, die meisten der Audiodatei hat am Ende Lücke.

Sie können es here testen, fügen Sie einfach Schleifenattribut hinzu und führen Sie die Seite aus.

Mit JavaScript

Hier ist auch eine Alternative von Javascript mit

myAudio = new Audio('someSound.ogg'); 
myAudio.addEventListener('ended', function() { 
    this.currentTime = 0; 
    this.play(); 
}, false); 
myAudio.play(); 

Hier finden Sie JavaScript kleine Lücke erstellen, können Sie es durch das Spielen Schleife nicht überwinden kann, wenn der Ton beendet ist, aber wenn Audio ist im Begriff zu beenden. Hier ist Code.

Hier ist, was Sie wollen.

myAudio = new Audio('http://unska.com/audio/pinknoise.ogg'); 
myAudio.ontimeupdate= function(i) { 
    if((this.currentTime/this.duration)>0.9){ 
    this.currentTime = 0; 
    this.play(); 
    } 
}; 
myAudio.play(); 

Here ist Demo.

+0

Meinst du das ernst? HTML-Audio schafft die schlimmste Lücke von allen http://unska.com/audio/htmlaudio.html Die Javascript-Version schafft eine unangenehme Lücke zu http://unska.com/audio/javascriptaudio.html – unska

+0

Auch wenn Sie zeigen möchten, wie Sie eine lückenlose Wiedergabe Schleife, verwenden Sie eine Sounddatei, die selbst lückenlos ist, kein Pferd Sound mit Stille am Anfang und Ende auf der Datei – unska

+0

@unska die meisten der Werkzeuge, die Sie erwähnten, implementieren HTML5 Audio .. – Pogrindis

-1

Versuchen SoundJS. Es enthält eine cordova plugin.

+0

Ich habe sie bereits benachrichtigt, dass ihr Plugin nicht funktioniert: https : //github.com/CreateJS/SoundJS/issues/170 – unska

Verwandte Themen