2009-07-20 93 views
1

我有一個傳統的文件格式,其中包含嵌入在其中的聲音(以各種編碼方式)。我希望能夠通過讀取文件中的聲音字節並用它們實例化Sound對象來在Flash(Air?)中播放這些聲音。in flex,動態加載編碼字節的聲音對象

如果聲音未編碼(例如,原始pcm),我發現我可以使用新的flex 4 SampleDataEvent.SAMPLE_DATA事件播放聲音。

但是,如果聲音是編碼的(例如,mp3),那麼我很茫然。 SampleDataEvent.SAMPLE_DATA期望的聲音必須是原始的pcm。從我所看到的,編碼的聲音只能通過[嵌入]實例化,或者通過使用帶有Sound.load()的URLRequest來實例化。

當然還有第三種方法? AMF還是e4x?

回答

3

真的只有兩條路線可供您使用。首先是在ActionScript中編寫解碼器。您可以使用Alchemy來移植一些C/C++代碼,以使這項工作變得更容易(並且可能更具性能)。這正是Ogg Vorbis播放與Flash一起工作的原因。

另一種選擇是在ByteArray內部動態創建一個有效的SWF。該SWF可能包含由聲音數據組成的嵌入式聲音對象。在Flash Player 10可用之前,許多人已經取消了類似的黑客行爲。我相信你可以在Andre Michelle's and Joa Ebert's PopForge codebase找到一個好地方。

+1

我嘗試了動態創建聲音資產SWF的技術,它的工作原理。真是個好主意。 對於任何嘗試此操作的人,我推薦以下工具來抓住SWF格式: SWF規範(http://tinyurl.com/c6a2g4),010十六進制編輯器(http://tinyurl.com/d5gjad) ,SWF十六進制模板(http://tinyurl.com/n5vk4z), 和SWF工具(http://tinyurl.com/38edhl) – paleozogt 2009-07-27 16:57:15