Windows 何时使用Wave可扩展格式?

Windows 何时使用Wave可扩展格式?,windows,audio,wav,wdm,Windows,Audio,Wav,Wdm,我正在编写一个音频库,其中包括读取和写入波形文件,我了解三种可能的波形文件格式之间的差异,但不清楚在处理单声道或立体声PCM数据时何时使用可扩展格式。我一直使用它作为我的主要参考,它清除了何时使用可扩展格式的明显例子。然而,该链接提到,如果PCM数据大于16位,则应使用可扩展格式,但当我尝试使用Audacity导出24位或32位音频时,他们没有使用可扩展格式 我在规范中没有提到在这种情况下应该使用可扩展格式,或者所有文件都应该使用可扩展格式。现代图书馆会支持旧的格式吗?我是否应该简化文件编写,以

我正在编写一个音频库,其中包括读取和写入波形文件,我了解三种可能的波形文件格式之间的差异,但不清楚在处理单声道或立体声PCM数据时何时使用可扩展格式。我一直使用它作为我的主要参考,它清除了何时使用可扩展格式的明显例子。然而,该链接提到,如果PCM数据大于16位,则应使用可扩展格式,但当我尝试使用Audacity导出24位或32位音频时,他们没有使用可扩展格式

我在规范中没有提到在这种情况下应该使用可扩展格式,或者所有文件都应该使用可扩展格式。现代图书馆会支持旧的格式吗?我是否应该简化文件编写,以便在所有情况下都使用可扩展格式

更新:


我从微软找到了关于格式块的信息。据我所知,PCM数据可以使用可扩展格式或18字节格式,但旧的16字节格式已经过时。有人知道你是否可以在Windows机器上播放16字节头的WAVE PCM文件吗?带16字节头的24位PCM怎么样?这是我在网上发现的另一个边缘案例。我没有Windows映像,因此我无法自己检查。

您可以在正常wav格式中指定24或32位,Audacity就是一个例子。可扩展格式更适合处理多个(2个以上)通道。根据我的经验,WAV格式比可扩展版本得到更广泛的支持。鉴于您正在处理单声道和立体声,我建议您坚持使用WAV。

它在MSDN上,但已被移动或消失,现在:

根据MSDN文档,“任何超过2 通道,每个采样超过16位,或超过44100个采样 每秒必须用
波形可感知的
来描述


我会使用16位PCM,然后将采样率更改为48000 Hz、little endian和2声道立体声,以获得最清晰的结果,因为大多数CD都是44100 Hz的,因此更改为48000 Hz对于消费者质量音频(商业音频)以外的更高质量的目的非常有用。这将是最干净的选择。

根据


你误解了这个问题。他并不是问哪个位深度/采样率提供了保存音频的“最干净”的方法(事实上,上采样会引入不必要的伪影,不会导致额外的“干净”)。他基本上是在问什么时候使用可扩展格式是合适的(或最好的)。我要补充的是,上述情况意味着,如果您正在生成/获取音频,您可能必须使用
waveformattextensable
。但是,如果您正在使用音频,它可能会使用
waveformatextensable
,即使可以使用
WAVEFORMATEX
指定它,因此您应该编写代码来处理这两种情况。
 "The WAVE_FORMAT_EXTENSIBLE format should be used whenever:
    1) PCM data has more than 16 bits/sample.
    2) The number of channels is more than 2.
    3) The actual number of bits/sample is not equal to the container size.
    4) The mapping from channels to speakers needs to be specified."