播放音频文件和调整系统音量

时间:2012-04-12 21:35:00

标签: c++ audio windows-vista

我正在写一个小小的音乐节目而我正在尝试播放mp3。现在,我有一些非常难看的东西,但它确实有效:

std::string command("cd \"C:\\Program Files (x86)\\Windows Media Player\" && wmplayer /play \"D:\\music\\A Perfect Circle\\eMOTIVe\\a.mp3");

system(command.c_str());

有更好或更可靠的方法吗?另外,如何调整主系统容量?

2 个答案:

答案 0 :(得分:1)

如果Windows中安装了MP3编解码器,您可以使用Win32 API PlaySound()功能或VCL TMediaPlayer组件来播放该文件。

要设置主volumne,请使用Win32 API waveOutSetVolume()函数。

答案 1 :(得分:1)

我创建了一个名为“Crosstalk”的C ++音频库。

Crosstalk是一个实时C ++音频引擎,可让您创建和路由音频系统。

以下是如何播放mp3文件的示例:

XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;

long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);

system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);

mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();

Crosstalk包含示例Xcode和Visual Studio项目。

您可以下载Crosstalk并查看API文档和许可详细信息here

修改

在设置音量方面:Crosstalk中包含一个名为“XtGain”的组件,您可以在mp3解码器输出和音频设备输入之间串联连接。这将允许您在音频流到达扬声器之前设置它的音量。

编辑(01-12-2012):

Crosstalk已被一个名为“DSPatch”的开源项目所取代。 DSPatch本质上是Crosstalk背后的路由引擎的升级版本,不再局限于音频处理。 DSPatch允许您创建和路由几乎任何类型的可想象的流程链,并且它可以免费用于个人和专有用途:)