HTML5-Audio: Wie kann ich einen Clip schnell anhalten und neu starten?

7

Siehe Titel. Ich versuche, alle 300 Millisekunden vier Mal hintereinander eine Audiodatei abzuspielen. Da der Clip jedoch länger als 300 ms ist, ignoriert er neue Wiedergabeanforderungen, bis der Clip abgespielt wurde. Ich suche nach einer Möglichkeit, den Clip alle 300ms anzuhalten und neu zu starten.

%Vor%

Das funktioniert nicht. Es wird nicht gestoppt und neu gestartet, unabhängig davon, ob n.currentTime = 0 verwendet wird oder nicht.

Hier ist eine WAV-Datei, wenn Sie eine zum Testen benötigen: Ссылка

    
user353885 06.11.2012, 01:46
quelle

3 Antworten

18

Wo immer Sie anrufen, machen Sie einfach folgendes in der Reihenfolge -

%Vor%     
Jatin 06.11.2012, 02:02
quelle
3

aus Abschnitt 4.8.10.6 von die Spezifikation

  

Medien. Dauer Gibt die Länge der Medienressource in Sekunden zurück.   unter der Annahme, dass der Anfang der Medienressource zur Zeit Null ist.

     

Gibt NaN zurück, wenn die Dauer nicht verfügbar ist.

     

Gibt Infinity für unbegrenzte Streams zurück.

     

Medien. currentTime [= Wert] Gibt die offizielle Wiedergabe zurück   Position in Sekunden.

     

Kann eingestellt werden, um die angegebene Zeit zu suchen.

     

Wird eine InvalidStateError-Ausnahme auslösen, wenn keine ausgewählt ist   Medienressource oder wenn es einen aktuellen Media Controller gibt.

Somit erlaubt die Spezifikation keine Suchvorgänge von weniger als einer Sekunde. Verschiedene Browser implementieren es jedoch (natürlich) auf andere Weise. Einige Browser können dies unterstützen, aber es wird ein großer Ärger sein, es in allen implementierten Browsern zuverlässig funktionieren zu lassen. Unter der Annahme, dass Sie Millisekunden-Suchläufe durchführen können, ist der andere Aspekt, dass der js-Interpreter Ihre Anforderung möglicherweise nicht rechtzeitig erfüllen kann, dh die Verarbeitung der Suche dauert länger als der Wert der Suche, was zu anderen Schwierigkeiten führen würde / p>

Mein Rat an Sie wäre, den html5-Ansatz für einen Augenblick aufzugeben, wenn Sie wirklich weniger als eine Sekunde Granularität für Ihre Suchvorgänge benötigen und wenn möglich ein Plugin oder Code verwenden, der nativ auf dem Host ausgeführt wird.

    
Max DeLiso 06.11.2012 02:01
quelle
-1

Das ist ein bisschen wie ein Hack, aber ich mache das:

%Vor%

Mach das für so viele wie du brauchst. Der Bonus ist, dass Sie den Klang nicht verlieren, so dass Sie es sich leisten können, das Ambiente zu nutzen (Spiele möchten manchmal, dass sich die Sounds zum Beispiel überlappen).

Es gibt elegantere Möglichkeiten, dies zu tun. Ich würde eigentlich eine Funktion schreiben, die einen Audio-Dateinamen, einen ID-Stamm (wie im Beispiel blah) und eine Anzahl von durchzuspielenden Elementen (max gleichzeitiger Wert für diesen Sound) enthält und eine Funktion zurückgibt, die aufgerufen werden kann klingen. Diese Funktion fügt auch die Elemente der Seite hinzu.

Schließlich sollten Sie wahrscheinlich mindestens MP3 und Wav verwenden, um die größte Verbreitung von x-Browser-Kompatibilität zu erhalten, je mehr Formate, desto besser, da Wave ist große Bandbreite Schwein.

Hoffe, das hilft. (Ich habe diese Technik in Chrome, Firefox, Ice Weasel verwendet) auf Win, Mac OSX und Linux

    
SamMorrowDrums 20.06.2014 11:34
quelle

Tags und Links