2

我非常努力地寻找一个示例来展示如何在 Flash 中播放 speex 编码的音频。我尝试了以下代码 -

var connect_nc:NetConnection = new NetConnection();
connect_nc.connect(null);
var stream_ns:NetStream = new NetStream(connect_nc);
stream_ns.play("RE-Sample.m4a");

可在 -

http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player_03.html _

我用 .flv 视频和 AAC 编码的音频文件测试了上面的代码,它工作得很好。但是当我尝试 stream_ns.play("sample.spx") 我得到一个流未找到异常。

我是否为 speex 音频使用了错误的容器 (.spx)。是否支持从文件播放 speex 音频?请帮忙!

(如果你能提供一个例子,那就太好了。)

4

4 回答 4

2

从我的测试来看,ArtBIT 似乎也是正确的。SPX 只能作为 FLV 容器中的音频编解码器播放。你有几个选择:

  1. 通过重新编码,提前使用 FLV 容器包装您的 SPX 文件。
  2. 使用 FMS 或 Red/Xuggle 进行“实时”转码 (http://www.pubbs.net/200906/osflash/18579-red5-streaming-speex-audio.html)
  3. 将 SPX 加载为字节数组,然后使用如下库将其包装为 FLV:http ://www.zeropointnine.com/blog/simpleflvwriteras-as3-class-to-create-flvs/

希望这可以帮助。

于 2010-10-08T21:16:53.543 回答
1

这听起来像是炼金术的工作。使用 Alchemy,您可以将 Speex 解码器从 C 转换为 AS3。这是 Adob​​e Labs 的链接,其中有一个将 OggVorbis 解码器从 C 转换为 AS3 的示例:http://labs.adobe.com/wiki/index.php/Alchemy: Libraries

于 2010-10-12T07:44:42.307 回答
1

您必须将它放在 flv 容器中,任何闪存媒体服务器都不允许它以任何其他形式出现(除非它是现场直播)。您可以使用较新版本的 ffmpeg 转换文件,如下所示:
ffmpeg -i RE-Sample.m4a -y -vn -acodec libspeex -ac 1 -ar 16000 -f flv RE-Sample.flv

于 2010-10-11T20:36:58.953 回答
0

根据http://osflash.org/flv#codecs1 flv是唯一支持speex编解码器的容器。

用flv试试?

于 2010-10-07T17:41:31.573 回答