使用RTMFP与受控语音音频进行实时语音聊天

时间:2012-03-27 09:31:37

标签: flash audio microphone netstream rtmfp

我们正在使用Cumulus构建实时RTMFP语音聊天应用程序。虽然使用NetStreams基本语音传输非常简单,但我们遇到了一个大问题:

似乎没有办法操纵NetStream发送的麦克风数据,也没有办法操纵侦听NetStream在播放之前收到的数据。

然而,这正是我们所需要的。我们不想传输正常麦克风录制的音频,但首先将其调高,然后发送,然后播放。或先发送,然后播放,然后播放。但似乎整个录音,speex编码,speex解码和音频播放完全封装在NetStream类中。

实现我们想要的唯一方法(以及所有这些方法完全删除NetStream)似乎是:

  1. 发送原始音调数据。这确实有效,但当然要发送大量数据,并且在本地局域网测试之外可能无法快速运行。

  2. 调整音频数据,使用现有的编码器转换为ogg / mp3,用于闪存,发送,解码ogg / mp3和播放。但这意味着对从麦克风接收的每个样本数据包进行编码,添加标题内容等等。因此,与原始音频数据相比,这甚至可能不会产生太大的好处。

    2.1。如果闪存有Speex编码器/解码器,这实际上是一个好方法。但具有讽刺意味的是,除了内置的(用于在NetStreams中编码/解码音频)之外,还有其他方法无法明确使用。是的,非常感谢你提供它,Adobe ...

  3. 将数据发送到Cumulus服务器,在那里推销(并可能转换)并发送给收件人。这可能甚至不会比1快得多,也会丢掉RTMFP,P2P通信的确切好处。

  4. 这个问题的解决方案是否比我在此处列出的更好,可能是一种在麦克风数据传递到NetStream之前实际操作麦克风数据的方法?

1 个答案:

答案 0 :(得分:3)

为了获得可行的东西,音频数据必须以压缩格式转换,原始数据代表大量数据。 我认为第二种选择更好; - )

我已经在闪存中开发了一个ogg vorbis解码器/编码器,在使用Alchemy时,它消耗的CPU总是少于10%! 这完全可能。

如果您更喜欢speex格式,我认为通过一致的努力,可以在使用炼金术构建speex代码时获得相同的效果。

如果我能再给你更多信息,请联系我cumulus.dev@gmail.com; - )