如何流式传输WAV文件?

7
我正在开发一个应用程序,其中我记录音频并通过网络上传音频文件。为了加快上传速度,我想在录制完成之前开始上传。
我创建的文件是WAV文件。我的计划是使用多个数据块。因此,我不使用正常的编码(RIFF、fmt、data),而是使用(RIFF、fmt、data、data、...、data)。首先遇到的问题是RIFF头需要整个文件的总长度,但当流式传输音频时,这显然是未知的(现在我使用任意数字)。另一个问题是我不确定它是否有效,因为Audacity无法识别该文件,Windows Media Player打开文件,但只播放了很小的一部分。我一直在阅读WAV规范,但没有找到答案。
有什么建议吗?

为什么必须是 WAV 格式?你是如何进行流媒体传输的? - intgr
3个回答

4

我已成功地使用一个数据块流式传输了一份wav文件,并将ChunkSize设置为0xFFFFFFFF以及Subchunk2Size同样设置为0xFFFFFFFF。生成的文件虽然不完全符合规格,但是当通过<audio>标签嵌入时,Chrome可以实时播放它而没有问题。同时,下载下来的文件也是可播放的。

WAV格式


3
你只需要使用支持追加而无需编辑头部的容器格式。
我建议使用原始PCM样本。它们可以随意转换为任何其他格式。
Audacity可以从“文件”->“导入”->“原始数据”菜单中导入原始字节。
另一个选项可能是在可流式传输的容器格式中使用无损音频编解码器,如FLAC。(由捷克网络广播电台完成) 我注意到VLC可以从声卡压缩和流式传输FLAC-in-OGG。从那里存储或解压缩流到服务器端应该是一个简单的步骤。

0
你要上传到哪里?你自己的网站吗?听起来你需要一些服务器端代码来将你的原始样本上传并在服务器上组装成一个有效的WAV文件(正确的文件长度字段,一个数据块)。
但是如果你真的想加快上传速度,我认为你实际上想上传MP3编码帧,并让服务器将它们组装成一个MP3文件。这更加复杂,恐怕需要更多的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接