【问题标题】:Setting channel volume in ALSA在 ALSA 中设置通道音量
【发布时间】:2015-06-26 00:40:43
【问题描述】:

我的应用使用 ALSA 通过各种渠道播放原始 PCM 音频数据。我使用 snd_pcm_open() 分配一个新的音频通道,然后通过 snd_pcm_hw_params_xxx() 调用设置 PCM 格式,最后使用 snd_pcm_writei() API 将原始 PCM 音频数据提供给 ALSA。

到目前为止一切正常,但我还没有找到任何方法告诉 ALSA 降低以上述方式分配的声道的音量。当然,我可以在通过 snd_pcm_writei() 将 PCM 数据发送到 ALSA 之前手动对 PCM 数据应用音量缩放,但真的没有办法让 ALSA 自己做这件事吗?

【问题讨论】:

    标签: linux audio alsa pcm


    【解决方案1】:

    您可以通过 amixer:

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

    要获取名称值 - 检查 alsamixer,将“播放音量”附加到每个。

    通过 alsamixer:

    键盘z是左声道减小。

    q 为左增加。

    c 是右减。

    e是对的增加

    【讨论】:

    • 我希望以编程方式而不是通过外部程序来实现。
    • Amixer 并不是真正的外部程序。它是 ALSA 附带的标准实用程序。您可以从任何其他程序调用它。我经常使用 Linux 音频,这是我通常使用的。到目前为止,这是设置每个频道音量的最简单方法,我发现它是可靠的。
    【解决方案2】:

    ALSA 没有这个功能。

    您必须自己进行缩放,或者使用像 PulseAudio 这样的声音服务器。

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 2011-05-04
      • 2014-10-13
      • 2011-10-10
      • 2012-09-14
      • 2013-10-29
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多