C 轻松播放24位.wav音频文件

C 轻松播放24位.wav音频文件,c,winapi,audio,directsound,C,Winapi,Audio,Directsound,众所周知,Windows APIPlaySound()不允许播放24位.wav文件 在Windows平台下,用C/C++实现24位.wav文件的最短路径是什么?>/P> (如果可能,不需要第三方库)您可能可以使用,但我不确定它是否可以播放24位WAV文件,是否可以播放平台要求是什么 MCI使用mciSendString处理发送的简单字符串命令。要打开文件并播放它(为了简洁起见,省略了错误检查): 请注意,别名sampleSound是您为打开的资源指定的自定义名称,因此您可以稍后参考它。您可以使用

众所周知,Windows API
PlaySound()
不允许播放24位.wav文件

在Windows平台下,用C/C++实现24位.wav文件的最短路径是什么?>/P> (如果可能,不需要第三方库)

您可能可以使用,但我不确定它是否可以播放24位WAV文件,是否可以播放平台要求是什么

MCI使用
mciSendString
处理发送的简单字符串命令。要打开文件并播放它(为了简洁起见,省略了错误检查):

请注意,
别名sampleSound
是您为打开的资源指定的自定义名称,因此您可以稍后参考它。您可以使用字符串“close sampleSound”关闭资源,还有更多的命令和选项用于控制播放


如果这不起作用,那么最好使用DirectShow,它可以使用系统上安装的所有DirectShow过滤器进行播放。这个答案给出了示例代码。

仅供参考,我还将MicroVirus的答案改写为Python代码:

import ctypes

ctypes.windll.WINMM.mciSendStringW(u"open BASS.wav type waveaudio alias sample1", None, 0, None)
ctypes.windll.WINMM.mciSendStringW(u"play sample1 from 0",  None, 0, None)

raw_input()

适用于24位.wav文件

我可能会建议使用
mciSendString
,但这篇文章似乎表明这也可能有问题。你看过DirectShow的使用情况了吗?谢谢@MicroVirus。请给我一个小的代码示例,以便我可以尝试使用
mciSendString
?(我使用Win7,所以我不介意它是否与WinXP一起工作)。
import ctypes

ctypes.windll.WINMM.mciSendStringW(u"open BASS.wav type waveaudio alias sample1", None, 0, None)
ctypes.windll.WINMM.mciSendStringW(u"play sample1 from 0",  None, 0, None)

raw_input()