如何流式传输WAV文件?

问题描述 投票:3回答:3

我正在编写一个应用程序,用于录制音频并通过网络上传音频文件。为了加快上传速度,我想在完成录制之前开始上传。

我正在创建的文件是WAV文件。我的计划是使用多个数据块。而不是我正在使用的正常编码(RIFF,fmt,data)(RIFF,fmt,数据,数据,......,数据)。第一个问题是RIFF标题需要整个文件的总长度,但在流式传输音频时当然不知道(我现在使用的是任意数字)。另一个问题是我不确定它是否有效,因为Audacity无法识别该文件,而Windows Media Player会打开该文件,但只播放一小部分文件。我一直在阅读WAV规格,但没有找到答案。

有什么建议?

audio wav
3个回答
3
投票

您只需使用支持追加而不编辑标题的容器格式。

我建议使用Raw PCM样本。它们可以随意转换为其他任何东西。

Audacity将从File - > Import - > Raw Data菜单导入原始字节。

另一种选择可能是无损音频编解码器,例如可流式容器格式内的FLAC。 (As done by a Czech web radio station)

我注意到VLC可以从声卡中压缩和流式传输FLAC-in-OGG。应该是一个简单的步骤,在那里存储或解压缩服务器端的流。


1
投票

我设法通过仅使用一个数据块并将ChunkSize设置为0xFFFFFFFF并将Subchunk2Size设置为0xFFFFFFFF来流式传输wav。生成的文件不完全符合规范,但是当通过<audio>标记嵌入时,Chrome会实时播放它而不会出现问题。下载的文件也可以播放。

WAV format


0
投票

你在哪里上传到?你自己的网站?听起来你需要一些服务器端代码来获取原始样本上传并将它们组装到服务器上的有效WAV文件(正确的文件长度字段,一个数据块)中。

但是,如果你真的想加快上传速度,我认为你真的想要上传MP3编码的帧并让服务器将它们组装成MP3文件。哪个更复杂,我害怕。

热门问题
推荐问题
最新问题