来自 Ruby Web 应用程序的实时音频录制/播放

Posted

技术标签:

【中文标题】来自 Ruby Web 应用程序的实时音频录制/播放【英文标题】:Real-time audio record/playback from a Ruby web app 【发布时间】:2011-11-23 14:34:42 【问题描述】:

我想知道是否有人在音频记录(来自用户浏览器上的麦克风)和从基于 Web 的应用程序 (Ruby/RoR) 回放方面取得了成功?

到目前为止我发现了什么——我可以编写一个 flex/flash 应用程序来录制音频,然后让一个像 Red5 这样的服务器端来接收和转换。这听起来更复杂,而且我还看到了不同类型的托管问题等人们遇到的问题 - 所以我认为可能有更好/更简单的解决方案!我也查看了 html5/web-kit,但似乎只适用于 chrome 并且仅限于文本字段等。

在我的应用程序中,我想录制用户语音,将其保存为 aws/s3 为 mp3 或类似文件格式,并根据用户输入/选择在应用程序内将其回放给用户。虽然基于闪存的解决方案目前是可行的,但基于非闪存的解决方案将是首选,因为它将支持更多设备(你知道我指的是设备)..

【问题讨论】:

另见***.com/questions/2065797/… 【参考方案1】:

基于 Web 的记录的唯一选项是 Flash、Silverlight 或 Java。这些都不能在 iPhone 或 iPad 上运行 - 你需要一个本机应用程序。

您无需使用 Red5 进行 Flash 录制 - 您可以直接录制到内存,可选择编码(或 zip),然后上传数据。在将文件移动到 s3 之前,您最好使用 ffmpeg 或 SoX 在服务器端进行 mp3 编码。

【讨论】:

在 Flash 中直接录制到内存的缺点是其 API 不支持压缩,因此您需要将未压缩的 wav 发送回您的服务器。 @warhammerkid 有一些选项 - zip 很简单,并且有 flac、mp3 等的 as3 / alchemy 实现 感谢您的回答和 cmets - 很有帮助。您是否在 flex 中看到过任何开源甚至是实验性代码 - 可能会节省我的时间,而不是从头开始编写?我搜索了一下,找到了一个向他的 flash 二进制文件出售许可证的产品——我对来自鲜为人知的来源的二进制文件感到不舒服,因此寻找更好的选择。我还初步看到了 Tropo(一个可以与 web 应用相结合的手机应用)有一些使用他们的服务进行录音的音频 api。【参考方案2】:

有一种使用 HTML5 和服务器的方法。只需录制视频即可。 将视频转换为音频,然后根据需要使用音频。

此实现从视频中获取音频并运行 ffmpeg 提取音频:

http://goo.gl/A0bya

这是在 php 中,但不应该太 很难创建一个 Ruby 版本。轻松愉快。

【讨论】:

以上是关于来自 Ruby Web 应用程序的实时音频录制/播放的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 mp4 中使用 ruby​​ on rails / web / html5 录制音频

通过基于 Web 的实时音频捕获和广播,最大限度地减少延迟

来自麦克风的实时音频播放。 C#

将实时音频与 Android 中录制的音频进行比较

IOS实时录制音频并分割成文件

如何在 Python 中进行实时语音活动检测?