如何在 C++ 中使用 SDL 静音?
扬声器连接到耳机插孔。如果音量未静音,我可以听到背景噪音,但是当我静音(使用“混音器设置耳机静音”)时它会停止。我尝试了 Mix_VolumeMusic() 和 Mix_Volume() 将音量设置为零以达到相同的效果,但它只是改变了音乐音量,噪音仍然存在。
环境:
Debian Sqeeze
软件包:libsdl1.2-dev
版本:1.2.14-6.1
我认为 SDL 没有超出您所做的静音功能,尽管我什至没有在libsdl.org网站上的文档中看到这些功能。通过查看 API,我猜它只是控制一个内部软件混音器(PCM 音量控制在 SDL 1.3 愿望清单中),但您可以通过调整音量并使用 alsamixer 调出系统音量设置来检查这一点(<Esc > 键退出)。一个肮脏的解决方法是使用系统调用来执行 amixer 程序。您需要拥有#include <stdlib.h>
并运行system("amixer set Headphone mute");
. 除此之外,我会研究像 alsa 这样的其他东西来实现真正的静音并编写自己的静音功能,以便以后可以轻松替换它。如果你需要支持 Windows,你可以#ifdef _WIN32/#else/#endif
在里面写你的块。
虽然我不主张用硬件解决软件问题,但看起来更好的声卡可能是合适的。此外,如果您在计算机上使用后插孔,可能会获得比前插孔更好的声音。我总是从插入主板的细声线中听到很多噪音。