让我首先确定我想做什么:
我的用户能够在我的网站上录制语音笔记,为所述笔记添加标签以进行索引以及标题。保存笔记后,我将笔记的路径与数据库中的其他信息一起保存。
现在,我有 2 个选择来进行录制,都涉及嵌入在我的站点中的 .swf:
1)我可以使用 Red5 服务器将音频流式传输到我的服务器并保存文件并将所述文件的路径返回到我的应用程序以进行数据库保存,这似乎相当复杂,因为我必须转换音频并将其移动到服务器端 Red5 应用程序中属于用户的适当文件夹,我不太清楚如何构建。
2)我可以简单地记录音频并获取它的字节数组,对其进行 Base64 编码并将其与其他必要的数据(无论是通过简单的 POST 还是 AJAX 调用)一起发送到 PHP,解码它在服务器上并使用适当的扩展名制作文件,使用ffmpeg也会在这里进行音频转换,这个选项看起来更简单但我不知道它有多可行。
您认为哪个选项更可行且更易于开发?提前致谢
最佳答案
根据录制的计划持续时间,您很可能能够使用第二个选项。我最近在一个项目中成功地使用了类似的方法,但录制时间只有 30 秒左右。这就是我所做的与您的建议不同的地方,以及为什么我认为它更好:
Number
上的麦克风获得的完整 64 位浮点数 (AS3 SAMPLE_DATA
)事件。只需阅读 Number
做myFloatSample * 0x7fff
转换为 16 位有符号整数。 Microphone.rate
相应的属性(property)。 compress()
或 deflate()
ByteArray 上的方法来压缩它。在服务器上,分别使用 ZLIB 或原始 DEFLATE(膨胀)算法解压缩,PHP supports . 显然 Red5 解决方案可能会更好,因为它更适合任务。但是,如果您没有资源来设置 Red5 服务器,或者不想使用 Java,那么只要您远离太长的录制内容,上述解决方案就可以很好地工作。
举个简单的例子,以每秒 22,050 个样本进行 30 秒的记录,每个样本 2 字节约为 1.3MB。即使放气后,传输到服务器的 30 秒音频仍可能接近 1 兆字节。这可能会或可能不会被您的应用程序接受。
关于php - 在网站 : Red5 stream or posting the audio data? 上录制音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326039/