SDL中的SDL静音音量

时间:2011-08-09 11:03:07

标签: c++ linux sdl mute

如何在C ++中使用SDL静音音量?
扬声器连接到耳机插孔。如果音量未静音,我可以听到背景噪音,但是当我静音(使用'amixer设置耳机静音')时它会停止。我尝试使用Mix_VolumeMusic()和Mix_Volume()将音量设置为零以达到相同的效果,但它只是改变音乐效果,噪音仍然存在。

环境:
Debian Sqeeze
包装:libsdl1.2-dev
版本:1.2.14-6.1

1 个答案:

答案 0 :(得分:0)

我不认为SDL具有超出您所做功能的静音功能,尽管我甚至没有在libsdl.org网站上的文档中看到这些功能。从查看API,我猜它只是控制一个内部软件混音器(PCM音量控制在SDL 1.3愿望清单中),但您可以通过调整音量并使用alsamixer(&lt; Esc&gt;键退出)。一个肮脏的解决方法是使用系统调用来执行amixer程序。您需要#include <stdlib.h>并运行system("amixer set Headphone mute");。除此之外,我会调查其他类似alsa的东西以获得真正的静音并编写自己的静音功能,以便以后可以轻松替换。如果您需要支持Windows,可以在其中编写#ifdef _WIN32/#else/#endif块。

虽然我不提倡修复硬件的软件问题,但看起来好像是更好的声卡。此外,如果您在计算机上使用后置插孔而不是前置插孔,则可能会获得更好的声音。我总是从插入主板的细细声线中拾取很多噪音。