Debian - 脉冲音频 - 在 C++ 中设置麦克风输入音量

debian - pulseaudio - set microphone input volume in c++

本文关键字:麦克风 输入 设置 C++ 脉冲 音频 Debian      更新时间:2023-10-16

对于raspberrry设备,我需要以编程方式设置麦克风的输入音量

在 c++ 中,我可以读取实际值(如果我在 pa mixer 中更改它,则会更改),但是当我设置它时,它似乎不起作用......启动代码后,我检查PA面板混音器,音量没有变化

下面,来源及其卷和卷

SOURCE : [0] 'alsa_output.usb-0d8c_C-Media_USB_Headphone_Set-00-Set.analog-stereo.monitor' 'Monitor of Audio Adapter Analog Stereo'
   (0)= 65536
   (1)= 65536
SOURCE : [1] 'alsa_input.usb-0d8c_C-Media_USB_Headphone_Set-00-Set.analog-mono' 'Audio Adapter Analog Mono'
   (0)= 26281
SOURCE : [2] 'alsa_output.0.analog-stereo.monitor' 'Monitor of bcm2835 ALSA Analog Stereo'
   (0)= 65536
   (1)= 65536

所以我尝试更改源索引 #1 的音量

void setVolume(int index,int volume)
{
    pa_operation* o;
    currentVolume.values[0]=volume;
    if (!(o = pa_context_set_source_output_volume(context, index, &currentVolume, NULL, NULL))) 
    {
        printf("pa_context_set_source_output_volume() failed");
        return;
    }
    printf("new volume: %dn",currentVolume.values[0]);
    pa_operation_unref(o);
}

请有人帮忙吗?

谢谢

有人

在邮件列表中回答了我:

https://www.mail-archive.com/pulseaudio-discuss@lists.freedesktop.org/msg16025.html

问题是您将音量设置为"源输出" 而不是"来源"。源输出表示录制流,而 源是麦克风等设备。用 pa_context_set_source_volume_by_index()pa_context_set_source_volume_by_name() .