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



我正在编写一个很小的音乐程序,我正在尝试播放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());

有没有更好或更可靠的方法来做到这一点?另外,如何调整主系统音量?

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

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

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

串扰是一种实时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 文档和许可详细信息。

编辑:

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

编辑 (01-12-2012):

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

最新更新