HTML5-audio:, Wie, schnell zu stoppen und starten Sie einen clip?
Siehe Titel. Ich versuche, eine Audiodatei Abspielen 4 mal in Folge, alle 300 Millisekunden. Aber der clip ist länger als 300ms, so ignoriert es die neue play-Anforderungen, bis der clip fertig ist spielen. Ich bin auf der Suche nach einem Weg, um zu stoppen und starten Sie den clip jeder 300ms.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<audio id="note0440"><source src="0440.a4.wav" type="audio/wav"></audio>
<script type="text/javascript">
function playNote (loop) {
var n = document.getElementById("note0440")
if (loop > 4)
return
n.volume = 0.05
//n.currentTime = 0
n.pause()
n.play()
setTimeout("playNote("+(loop + 1)+")", 300)
}
</script>
<div style="margin:50px"><button onclick="playNote(1)">Play Note</button></div>
</body>
</html>
Funktioniert das nicht. Es nicht zu stoppen und neu zu starten, ob oder nicht n.currentTime = 0
verwendet wird.
Hier ist eine WAV-Datei, wenn Sie einen brauchen für die Prüfung: http://popstrip.com/misc/0440.a4.wav
- -Nicht ausgeführt .stop() vor dem ausführen .play() arbeiten?- Hab ich da wirklich gelesen das einige doco - und wie das aussieht, gibt es keine .stop(). Aber wie einige vorgeschlagen haben, macht eine Pause, dann wird die Zeit wieder auf 0, sollte den selben Effekt.
- auch, fyi, doctype angibt, eine html-version die nicht einmal die Unterstützung der audio-tag. ändern Sie es zu <!DOCTYPE html>
Du musst angemeldet sein, um einen Kommentar abzugeben.
wo immer Sie ruft halt einfach nur die folgenden in der Reihenfolge -
aus Abschnitt 4.8.10.6 von die Spezifikation
Also die Spezifikation nicht erlauben will, die weniger als eine Sekunde. Aber, andere Browser werden alle implementieren, die es anders (natürlich). Einige Browser kann unterstützen, aber immer es, um zuverlässig arbeiten in allen installierten Browsern heute wird ein großer Schmerz in den Arsch. Unter der Annahme, dass Sie ausgestellt werden können Millisekunde versucht, das andere Problem ist, dass der js-interpreter kann nicht in der Lage zu erfüllen Ihre Anfrage rechtzeitig, d.h. die Verarbeitung der suchen dauert länger als der Wert von der seek, die würde führen zu weiteren Schwierigkeiten.
Mein Rat an Sie wäre, auf Sie zu verzichten html5-Ansatz für jetzt, wenn Sie wirklich brauchen, kleiner als eine Sekunde Granularität für Ihre sucht, und verwenden Sie ein plugin oder code läuft nativ auf dem host, wenn überhaupt möglich.
Dies ist ein bisschen ein hack, aber ich mache Folgendes:
Tun Sie dies für so viele wie Sie benötigen. Bonus ist, verlieren Sie nicht den Schwanz von Ihrem sound, so dass Sie sich leisten können zu verwenden, Ambiente (Spiele wollen manchmal die sounds überlappen, zum Beispiel).
Gibt es elegantere Wege, dies zu tun. Ich würde eigentlich eine Funktion schreiben, die einen audio-Dateinamen, die einen id-Stamm (wie blah in dem Beispiel) und eine Anzahl von Elementen zu Durchlaufen (max-gleichzeitige-Wert für diesen sound), und gibt eine Funktion, die aufgerufen werden kann, um den Ton wiederzugeben. Diese Funktion wird auch hinzufügen, die Elemente auf der Seite.
Schließlich sollten Sie wahrscheinlich verwenden Sie mindestens MP3 und Wav zu Holen Sie sich die größte Verbreitung von x-browser-Kompatibilität, je mehr Formate, desto besser, als Welle ist die große Bandbreite hog.
Hoffe, das hilft. (Ich habe diese Technik in Chrome, Firefox, Ice Weasel) auf Win, Mac OSX und Linux