在flex中,是否可以嵌入speex文件?

时间:2009-07-18 17:05:33

标签: flex flash speex

据推测,Flash 10支持Speex音频格式。我想在我的SWF中嵌入一些Speex文件:

[Embed(source='assets/test.spx',mimeType='audio/x-speex')]
private static const SpeexSound:Class;

然而,我收到错误:

no transcoder registered for mimeType 'audio/x-speex'

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

Speex不是真正的传输格式 - 它没有内置于协议中的框架,因此它通常包含在OGG流中(不幸的是,其API比Speex API本身更复杂,但我离题了......)所以“audio / x-speex”的确意味着“OGG中的Speex”。

我还没有看到Flash支持OGG的任何地方 - 所以你从speexenc获得的那些文件无效:(

据报道,Flash以FLV格式对Speex进行编码/解码(根据此页面:http://jira.red5.org/confluence/display/codecs/Speex+Codec)。我没有尝试过这个,因为我想要定位Flash 9(也许ffmpeg可以正确编码一些小提琴)但是如果你有任何地方可以告诉我。

答案 1 :(得分:0)

我一直在研究这个问题。以下是选项:

  1. 嵌入一个ogg speex文件并使用Alchemy编译的libOgg和libSpeex对其进行解码。解码后的字节可以通过SampleDataEvent.SAMPLE_DATA输入Flash。当我们知道 libSpeex在某个地方生活在Flash Player中时,必须使用炼金术,这具有痛苦的讽刺意味。
  2. 您无法嵌入FLV,但可以嵌入SWF,因此将Speex FLV转换为Speex SWF。可以使用ffmpeg完成转换:

    $ ffmpeg -i test-with-speex.flv -vn test.swf
    

    然而,遗憾的是,这会自动将音频转换为SWF内的MP3。您应该能够像这样保存编解码器

    $ ffmpeg -i test-with-speex.flv -vn -acodec libspeex test.swf
    

    但ffmpeg目前不支持非MP3 SWF。格儿。也许还有其他转换工具可以做到吗?

答案 2 :(得分:0)

在服务器端,您可以使用这个被欺骗的ffmpeg项目:

http://code.google.com/p/xuggle-ffmpeg/

将您的音频编码为:

ffmpeg -i test.wav -acodec libspeex -f flv -y speex.flv