如何从 Debian Bullseye 中的脚本更改声音接收器

如何从 Debian Bullseye 中的脚本更改声音接收器

使用 Debian (LMDE 5) Bullseye,我无法使用 pacmd 更改音频接收器,就像使用 Ubuntu 一样。但是,配合音量控制应用程序/GUI 能够更改接收器。

它必须使用较低级别或其他方法,因为 Bullseye 中默认情况下不会运行pulseaudio。启动pulseaudio后,pacmd命令运行时没有任何错误,但音频继续从GUI中的接收器集播放。

我已经编辑了/etc/pulse/default.pa这一行,据我所知,它应该防止脉冲从 pacmd 发出时逆转更改:

load-module module-stream-restore restore_device=false

在 Ubuntu 中适用于我的声卡的命令是:

#change to analog stereo
pacmd set-card-profile alsa_card.pci-0000_00_1b.0 output:analog-stereo

#change to hdmi
pacmd set-card-profile alsa_card.pci-0000_00_1b.0 output:hdmi-stereo-extra1+input:analog-stereo

我的问题类似于: 使用终端更改输出(接收器),但问题没有有效的建议。

有没有人在最近的 Debian 中通过脚本成功更改接收器?

答案1

要通过 Debian Bullseye 中的脚本更改声音接收器(音频输出设备),您可以使用pacmd命令行工具,该工具是 PulseAudio 声音服务器的一部分。这是分步指南:

  1. pacmd如果尚不可用,请安装必要的软件包。您可以使用以下命令来安装它:

    sudo apt-get install pulseaudio-utils
    
  2. 通过运行以下命令确定可用的声音接收器:

    pacmd list-sinks | grep -e 'index:' -e 'name:'
    

    此命令将列出可用的接收器及其索引号。记下您要切换到的声音接收器的索引号。

  3. change_sound_sink.sh使用您选择的文本编辑器创建脚本文件,例如,

    nano change_sound_sink.sh
    
  4. 在脚本文件中,输入以下行:

    #!/bin/bash
    
    # Set the desired sink index
    SINK_INDEX=my_sink_index
    
    # Change the default sink to the desired index
    pacmd set-default-sink $SINK_INDEX
    
    # Move existing streams to the new sink
    pacmd list-sink-inputs | awk '/index:/{print $2}' | while read -r input; do
        pacmd move-sink-input "$input" "$SINK_INDEX"
    done
    

    替换my_sink_index为您在步骤 3 中获得的所需声音接收器的索引号(例如01等)。

  5. 保存脚本文件 ( Ctrl+ Oin nano) 并退出文本编辑器 ( Ctrl+ Xin nano)。

  6. 通过运行以下命令使脚本文件可执行:

    chmod +x change_sound_sink.sh
    
  7. 使用以下命令运行脚本:

    ./change_sound_sink.sh
    

这会将声音接收器更改为指定索引,并将任何现有音频流移动到新接收器。

运行脚本后,声音输出应切换到所需的接收器。您可以根据需要将此脚本合并到其他自动化或控制系统中。

相关内容