Bevorzugte Methode für looping-sound von flash as3
Ich habe einige Probleme mit looping sounds in flash AS3, wenn ich sagen, dass der sound-Schleife, bekomme ich eine leichte Verzögerung, die am Ende/Anfang der audio.
Die audio ist beschnitten und richtig spielen, ohne eine Lücke auf garage-band.
Ich weiß, dass es Probleme mit sound im Allgemeinen in flash-bugs mit falscher Zeichencodierung und Abhängigkeit von den Ungenauigkeiten bei der SOUND_COMPLETE-Ereignis (Und Adobe sollte sich schämen, mit Ihrem Umgang mit diesen Themen)
Ich habe versucht, verwenden Sie die integrierte in-Schleife argument in der Methode play auf der Sound-Klasse und reagieren auch auf die SOUND_COMPLETE-Ereignis, aber sowohl die eine Verzögerung verursachen.
Aber hat jemand kommen mit einer Technik, die für die Schleife ein sound ohne spürbare Lücke?
- Hey, Brian, ich sehe, Sie haben akzeptiert, Branden die Antwort, aber könnten Sie mir sagen, wenn Mercer Lösung gearbeitet? Hast du es versuchen? Würde ich eher nicht greifen, um mit dem SAMPLE_DATA Fall, wenn ich helfen kann...
- Hmm, ich kann meine Frage beantworten: Nein. Aufruf von spielen in einer Veranstaltung.SOUND_COMPLETE-Ereignis-handler beseitigt nicht die Lücke, zumindest auf os x, FP10.
- Eigentlich ist der Fall.SOUND_COMPLETE-Ereignis-Methode kann tatsächlich funktionieren. Die Datei, die ich mit hatte kleine Lücken am Anfang und am Ende.
- In meiner Erfahrung ist die vorgeschlagene Lösung von @Mercer hat immer noch eine gute chance, mit spürbaren Verzögerungen. Es scheint, dass @grapefrukt und yourseld getroffen haben, auf wichtige Fragen in Bezug auf zusätzliche Metadaten zu Hilfe mit looping.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die zuverlässigste Methode, wenn Sie können, verwenden Sie Flash Player 10, ist die Verwendung der neuen SampleDataEvent.SAMPLE_DATA-Ereignis.
Speziell, was Sie tun, ist, zuerst instanziieren Sie den sound, den Sie wollen, dann nutzen Sie die neue Extrakt-Methode konvertiert den sound in rohe PCM-Daten, codiert in ein ByteArray. Dann erstellen Sie ein neues Sound-Objekt, und das setup zu hören, für die es SampleDataEvent.SAMPLE_DATA-Ereignis. Wenn das Ereignis aufgerufen wird, wirst du push-2-8k (ein niedriger Betrag der Latenz reduziert, aber erhöht die Wahrscheinlichkeit von hörbaren Artefakten) von Daten aus dem ByteArray. Sie müssen nur sicherstellen, dass, wie Sie laufen aus dem Ende des ByteArray-Sie werden einfach nur eine Schleife zurück zum Anfang.
Diese Methode wird sichergestellt, dass Sie voll gapless playback.
Lückenlose Loopen von mp3 ' s ist nicht trivial aufgrund der Art, wie das format funktioniert. Zur Vereinfachung ein wenig; der Klang ist ausgestattet, um eine Reihe von frames, diese Zahl kann nicht beliebig gewählt werden, statt eine Polsterung (mit schweigen) ist erforderlich. Mp3 hat keine Möglichkeit der Speicherung, wie viel Polsterung wurde Hinzugefügt, so dass diese Informationen gehen verloren, sobald die Datei kodiert ist.
Der flash-IDE zu bekommen ist, um dieses durch die Einbettung dieser Metadaten, und Sie können auch. Sie müssen nur wissen, wie viel Verzögerung Hinzugefügt werden, indem Sie den encoder.
Andre Michelle erklärt das viel besser als ich können auf seinem blog.
Laut dieser Kerl, müssen Sie den import der Musik-loop als wav und haben die Flash-IDE selbst komprimieren, um mp3. Mit Flash des importierten mp3 verwenden von Daten bedeutet, dass Sie nicht wissen, wie Schleife, es richtig zu stellen.
Hier ist, wie id es Tat, ohne spürbare Verzögerung. Main-app:
Spieler-Klasse:
Haben Sie sagen, dass die mp3-Datei hat keine Verzögerung am Anfang/Ende, aber ich schlage vor, öffnen es mit audacity, und stellen Sie sicher, es gibt keine Verzögerung.
Ich benutze dieses tolle tool:
http://www.compuphase.com/mp3/mp3loop.zip
Sie geben Sie eine WAV-Datei und es gibt eine MP3 Datei, die kann perfekt sein (und gaplessly!) gespielt mit
Sound
's standardplay
Methode - z.B. :Können Sie auch die Ausgabe-MP3-Datei und re-konvertieren Sie Sie in WAV (mit AudioCity zum Beispiel) - dann haben Sie eine lückenlose WAV (kann die Arbeit innerhalb Ihrer FLA-Datei)
Hoffe es hilft
Wollte ich erstellen Sie eine Bibliothek für das Durchschleifen von audio, die nicht verlassen sich auf die COMPLETE-Ereignisse auslösen. Ich habe beschlossen, meine eigene standingwave3 addons Bibliothek. Überprüfen Sie heraus die ursprüngliche standingwave3 Projekt MaxL0rd. Mir ein work in progress, und es bekommt den job getan, auf der byte-Ebene für diese Angelegenheit (Keine loop-Timer oder nichts). Es funktioniert durch die in einem Klang mit Beginn-und Ende-Schleife-Punkte. Dann Klone die loop-sample-ein paar mal, basierend auf dem Zeit in Sekunden. Es sollte einfach zu benutzen sein. Dies ist der code für die Main.als in der Klasse
"looping" - Datei in den "Beispiele" - Ordner:
Check-out der source-Dateien hier:
https://github.com/charlesclements/standingwave3-addons