在flex中,从编码的字节动态加载Sound对象

时间:2009-07-20 16:46:57

标签: flex flash actionscript-3

我有一种遗留文件格式,其中包含嵌入其中的声音(以各种编码方式)。我希望能够通过读取文件中的声音字节并使用它们实例化Sound对象,在Flash(Air?)中播放这些声音。

如果声音未编码(例如,原始pcm),我发现我可以使用新的flex 4 SampleDataEvent.SAMPLE_DATA事件播放声音。

然而,如果声音被编码(例如,mp3),那么我就不知所措。 SampleDataEvent.SAMPLE_DATA期望的声音必须是原始pcm。从我所看到的,编码的声音只能通过[嵌入]它们,或者通过使用带有Sound.load()的URLRequest来实例化。

当然还有第三种方式? AMF还是e4x?

1 个答案:

答案 0 :(得分:3)

你真的只有两条路线可供选择。第一种是在ActionScript中编写解码器。您可以使用Alchemy移植某些C / C ++代码,以使这项工作变得更加容易(并且可能更高效)。这正是我将Ogg Vorbis播放用于Flash的方式。

另一个选项是在ByteArray中动态创建有效的SWF。该SWF可以包含由您的声音数据组成的嵌入式声音对象。在Flash Player 10推出之前,许多人已经取消了类似的黑客攻击。我相信你可以在Andre Michelle's and Joa Ebert's PopForge codebase找到一个好的起点。