2010-03-31 123 views
2

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

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

有什么建议吗?

+0

为什么它必须是WAV?你如何分流? – intgr 2010-05-05 21:20:33

回答

0

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

但是,如果你真的想加快上传速度,我会认为你实际上需要上传MP3编码帧,并让服务器将这些帧汇编成一个MP3文件。恐怕这更复杂。

3

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

我建议原始PCM样本。他们可以随意转换为其他任何东西。

Audacity将从文件 - >导入 - >原始数据菜单中导入原始字节。

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

我注意到VLC可以压缩,并从声卡流FLAC功能于OGG。应该是从那里存储或解压缩服务器端流的简单步骤。