flash - 使用 RTMFP 与操纵的语音音频进行实时语音聊天

标签 flash audio microphone netstream rtmfp

我们正在使用 Cumulus 构建实时 RTMFP 语音聊天应用程序.虽然使用 NetStreams 进行基本的语音传输非常容易,但我们有一个大问题:

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

然而,这正是我们所需要的。我们不想传输普通的麦克风录制的音频,而是先投音,然后发送,然后播放。或者先发送,然后投球,然后播放。但似乎整个录音、speex编码、speex解码和音频播放都完全封装在NetStream类中。

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

  1. 发送原始音调音频数据。这确实有效,但当然要发送大量数据,并且在我们的本地 LAN 测试之外可能无法足够快地工作。

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

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

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

对于这个问题,有没有比我在这里列出的解决方案更有效的解决方案,可能是一种在将麦克风数据传递到 NetStream 之前对其进行实际操作的方法?

最佳答案

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

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

如果您更喜欢 speex 格式,我认为通过坚持不懈的努力可以获得相同的结果,即使用炼金术构建 speex 代码。

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

关于flash - 使用 RTMFP 与操纵的语音音频进行实时语音聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886794/

相关文章:

java - 将 .jar 集成到 Flash 项目中

android - 替代MediaPlayer播放音频文件

audio - 如何使用佳能G7X Mark ii + Blue Yeti麦克风捕捉视频和声音

flash - 从嵌入网页的 Flash 程序中监听 http 流量的选项有哪些?

javascript - JS/HTML或FLASH Action 图显示

javascript - 将 PCM 数据附加到 MediaSource

google-app-engine - 从 Google App Engine 流式传输音频

android - 将耳机麦克风更改为内置麦克风

暂停当前​​歌曲时 Windows Phone 应用程序崩溃

actionscript-3 - flash as3 - 在不同的 swfs 中不能有同名的类吗?