c++中的SDL静音音量

SDL mute volume in C++

本文关键字:SDL 中的 c++      更新时间:2023-10-16

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

环境:
Debian压力
包:libsdl1.2-dev
版本:1.2.14-6.1

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

虽然我不提倡用硬件来解决软件问题,但看起来一个更好的声卡可能是合适的。此外,如果你在电脑上使用后插孔,你可能会得到更好的声音。我总是从插在主板上的细声线上听到很多噪音。