在ALSA中设置通道音量

3
我的应用程序使用ALSA通过各种通道播放原始PCM音频数据。我使用snd_pcm_open()来分配新的音频通道,然后通过snd_pcm_hw_params_xxx()调用设置PCM格式,最后使用snd_pcm_writei() API通过ALSA传递原始PCM音频数据。
到目前为止,一切都很顺利,但我还没有找到任何方法告诉ALSA减少以上所述方式分配的声音通道的音量。当然,我可以在通过snd_pcm_writei()将PCM数据发送到ALSA之前手动应用音量缩放,但是难道真的没有办法让ALSA自行处理吗?
2个回答

2

ALSA没有这样的功能。

你需要自己完成缩放,或者使用类似PulseAudio这样的音频服务器。


2

您可以通过amixer进行操作:

amixer cset name='Headphone Playback Volume' 98%,100%

要获取名称值-请检查alsamixer,并在每个名称后附加“播放音量”。

并通过alsamixer:

键盘z是左声道减少。

q是左增加。

以及

c是右声道减少。

e是右增加。


我想通过编程来完成它,而不是通过外部程序。 - Andreas
Amixer并不是一个外部程序。它是随着ALSA一起提供的标准实用工具。您可以从任何其他程序中调用它。我经常使用Linux音频,这就是我通常使用的方式。这绝对是设置每个通道音量最简单的方法,而且我发现它非常可靠。 - Fiodar Sazanavets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接