繁体   English   中英

C ++中的SDL静音音量

[英]SDL mute volume in C++

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

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

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

虽然我不主张通过硬件来解决软件问题,但似乎可能需要更好的声卡。 另外,如果您在计算机上使用后部插孔,则可能比前部插孔获得更好的声音。 我总是从插入主板的细声音电缆中拾取很多噪音。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM