1

我有兴趣学习如何在 ActionScript 3 中解码和播放音频。我了解如何使用 SAMPLE_DATA 事件将字节写入 Sound 对象,所以这不是真正的问题。我想了解的是如何在 Flash Player 中实现用于本机播放的替代音频格式。

我想我要问的是:如何获取 X 格式的内容并将其“转换/解码”为 WAV 格式并将字节写入 Sound 对象,播放音频?我有兴趣为 FLAC 音频和可能的 OGG 音频编写解码器,因为这些似乎是一些最广泛使用的开源音频格式。

任何人都可以给我任何建议吗?

4

2 回答 2

2

如果你想编写一个解码器,你首先应该看的是你想要解码的格式的规范。

ogg/vorbis 规范可以在这里找到:http: //xiph.org/vorbis/doc/Vorbis_I_spec.html

此外,看看(或移植)其他一些已经这样做的开源库(我不知道有任何用 Actionscript 编写的)可能会有所帮助,例如 Java:http://www .jcraft.com/jorbis/(我不知道这个库,我只是在谷歌搜索“ogg vorbis 开源”时发现它。

无论如何,你必须做一些工作才能让它工作,我并不是要阻止你,但我不确定 Actionscript 是否足够快以进行实时音频解码。

于 2010-07-03T01:14:33.933 回答
1

你可以尝试,但你不会有太多的精力去做其他事情。在 Flash 10 之前,我写了一篇文章,详细介绍了如何将 PCM 数据输入到 Flash 中的声音输出中。有人联系,因为他们写了一个 AS3 Ogg 解码器,但是……即使在完全优化代码之后,发现 AVM2 真的不能胜任这项工作。基本上,它相当慢,解码 OGG 是相当密集的处理器。从那以后的几年里,我看不出事情会发生多大的变化,因为 CPU 变得“更宽”了,而且速度并没有那么快。ActionScript 是单线程的,因此您不能卸载到另一个内核。

可能值得试……也许性能有所提高。

编辑:说了这么多,正如胡安所说,不要被这个答案气馁。我怀疑 FLAC 解码的计算需求可能比 OGG 少得多,如果 DSP 让你兴奋,花时间弄清楚所有这些东西是 100% 值得的,即使 Flash 路线(可能)导致失望。我个人认为 Silverlight 的MediaStreamSource看起来很有前途,但并没有真正涉足那么多。

于 2010-07-03T01:13:55.250 回答