2009-07-20 6 views
1

Ich habe ein Legacy-Dateiformat, das Sounds eingebettet enthält (in verschiedenen Codierungen). Ich würde gerne in der Lage sein, diese Sounds in Flash (Air?) Zu spielen, indem ich die Soundbytes aus der Datei lese und ein Sound-Objekt mit ihnen instanziiere.in flex, dynamisch laden Sound-Objekt aus codierten Bytes

Wenn der Sound nicht codiert ist (z. B. Roh-PCM), habe ich festgestellt, dass ich das neue Flex 4 SampleDataEvent.SAMPLE_DATA-Ereignis verwenden kann, um den Sound wiederzugeben.

Wenn jedoch der Ton codiert ist (z. B. mp3), dann bin ich ratlos. Der von SampleDataEvent.SAMPLE_DATA erwartete Sound muss raw pcm sein. Von dem, was ich gesehen habe, können kodierte Sounds nur durch [Einbetten] instanziiert werden, oder indem ein URLRequest mit Sound.load() verwendet wird.

Sicher gibt es einen dritten Weg? AMF oder e4x?

Antwort

3

Es gibt wirklich nur zwei Routen für Sie zu gehen. Die erste besteht darin, einen Decoder in ActionScript zu schreiben. Möglicherweise können Sie Alchemy verwenden, um etwas C/C++ - Code zu portieren, um diesen Job wesentlich einfacher (und möglicherweise leistungsfähiger) zu machen. Genau so habe ich die Ogg Vorbis-Wiedergabe mit Flash arbeiten lassen.

Die andere Option besteht darin, dynamisch eine gültige SWF innerhalb eines ByteArray zu erstellen. Diese SWF könnte ein eingebettetes Soundobjekt enthalten, das aus Ihren Sounddaten besteht. Eine Reihe von Leuten hat ähnliche Hacks in der Vergangenheit ausgeführt, bevor Flash Player 10 verfügbar war. Ich glaube, dass Sie einen guten Platz zum Beginnen in Andre Michelle's and Joa Ebert's PopForge codebase finden können.

+1

Ich habe die Technik der dynamischen Erstellung einer Sound-Asset-SWF versucht und es funktioniert. Was für eine großartige Idee. Für alle anderen, die dies ausprobieren, empfehle ich diese Tools, um das SWF-Format in den Griff zu bekommen: SWF Spec (http://tinyurl.com/c6a2g4), 010 Hex Editor (http://tinyurl.com/d5gjad) , SWF Hex-Vorlage (http://tinyurl.com/n5vk4z), und SWF-Tools (http://tinyurl.com/38edhl) – paleozogt