我正在写一个包含读写波文件的audio库,并且我理解三种可能的波文件格式之间的差异,但是在处理单声道或立体声PCM数据时不清楚何时使用可扩展格式。 我一直在使用这个作为我的主要参考,它清除了何时使用可扩展格式的明显情况。 但是,链接提到如果PCM数据大于16位,应该使用可扩展格式,但是当我尝试使用Audacity导出24位或32位audio时,他们没有使用可扩展格式。
在规范中我没有发现任何提及可扩展格式的情况,或者所有文件都应该使用可扩展格式。 现代图书馆是否会支持旧格式? 我应该简化文件写入到所有情况下使用可扩展格式吗?
更新:
我从Microsoft发现了关于格式块的这个资源 。 据我所知,PCM数据可以使用可扩展格式或18字节格式,但较旧的16字节格式已经过时。 有谁知道你是否可以在Windows机器上播放16字节的WAVE PCM文件? 如何与16字节的头24位PCM? 这是我在网上find的另一个边缘案例。 我没有Windows映像,所以我无法自己检查。
您可以使用正常的wav格式指定24位或32位,如Audacity所示。 可扩展格式更适用于处理多个(多于2个)通道。 根据我的经验,WAV格式比可扩展版本更广泛的支持。 鉴于你正在处理单声道和立体声,我会建议你坚持使用WAV。
这是在MSDN上,但移动或消失,现在的痕迹依然是 :
根据MSDN文档“超过2个通道的任何PCM格式,每个样本超过16位,或者每秒超过44,100个样本必须由
WAVEFORMATEXTENSIBLE
描述”
我将使用16位PCM,然后将采样率更改为48000 Hz,小端和2通道立体声,以获得最清晰的结果,因为大多数CD是44100 Hz,更改为48000 Hz对于更高质量除消费者质量音频(商业音频)以外的目的。 这将是最干净的选择。