WAVEOUTCAPS结构的Microsoft文档列出了音频设备可以支持的许多格式:

我在这里没有看到任何24位变量,尽管我已经确认我的声卡能够通过调用WaveOutOpen打开24位输出(并通过该输出播放24位音频文件)。
我猜想微软为18/20/24/32/48/64位的输出定义了额外的变量,但是我找不到它们。我尝试在网络上搜索,但没有得到任何结果,我尝试使用Visual在我当前的名称空间中搜索以"WAVE_FORMAT_“开头但没有找到任何其他定义的格式的变量。
是否可以使用WaveOutGetDevCap()函数或任何类似的函数在Windows上检查4/18/20/24/32/48/64位输出可用性?如果是这样的话,是怎么做的?
发布于 2020-09-24 10:54:25
waveOutXxx是传统的API,一般来说,现在不应该使用。这个API是真实音频API之上的一个仿真层,不需要支持在waveOutXxx时不存在的24位场景。没有为较新的格式定义特定的新常量,而且这些常量太多,因此不可能为每一种格式都定义单独的位。
您可以组成一个WAVEFORMATEX结构来描述您的高比特格式(通常使用它的WAVEFORMATEXTENSIBLE变体),并对照waveOutOpen函数检查它。
或者,更确切地说,使用WASAPI和IAudioClient::Initialize,有关详细信息和使用WAVEFORMATEX结构的方式,请参阅渲染流。
https://stackoverflow.com/questions/63985952
复制相似问题