来自 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 应用程序的实时音频录制/播放的主要内容,如果未能解决你的问题,请参考以下文章