如何通过脚本编辑 PulseAudio 配置?

Reg*_*ter 5 sound command-line pulseaudio hdmi

我已通过 HDMI 端口将电视连接至电脑。每次打开电脑时,我都需要将 pavucontrol(在配置选项卡中)从 (HDMI) 更改为 (HDMI 3)。\n我希望制作一个可以为我更改它的 bash 脚本。

\n\n

这是它在 pavucontrol 中的样子:

\n\n

\n\n

pavucontrol 更改前后命令pacmd list_sinks输出:

\n\n

pacmd list_sinks更改前:

\n\n
3 sink(s) available.\n    index: 0\n    name: <alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9049\n    volume: front-left: 65886 / 101% / 0,14 dB,   front-right: 65886 / 101% / 0,14 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 45,38 ms\n    max request: 6 KiB\n    max rewind: 344 KiB\n    monitor source: 0\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 2000,00 ms\n    card: 0 <alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00>\n    module: 6\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "USB Audio"\n        alsa.id = "USB Audio"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "0"\n        alsa.card = "2"\n        alsa.card_name = "USB Audio Device"\n        alsa.long_card_name = "C-Media Electronics Inc. USB Audio Device at usb-0000:01:00.0-10, full speed"\n        alsa.driver_name = "snd_usb_audio"\n        device.bus_path = "pci-0000:01:00.0-usb-0:10:1.0"\n        sysfs.path = "/devices/pci0000:00/0000:00:01.3/0000:01:00.0/usb1/1-10/1-10:1.0/sound/card2"\n        udev.id = "usb-C-Media_Electronics_Inc._USB_Audio_Device-00"\n        device.bus = "usb"\n        device.vendor.id = "0d8c"\n        device.vendor.name = "C-Media Electronics, Inc."\n        device.product.id = "0012"\n        device.product.name = "USB Audio Device"\n        device.serial = "C-Media_Electronics_Inc._USB_Audio_Device"\n        device.string = "front:2"\n        device.buffering.buffer_size = "352800"\n        device.buffering.fragment_size = "176400"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "analog-stereo"\n        device.profile.description = "Analogowe stereo"\n        device.description = "USB Audio Device Analogowe stereo"\n        alsa.mixer_name = "USB Mixer"\n        alsa.components = "USB0d8c:0012"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-usb"\n    ports:\n        analog-output-speaker: G\xc5\x82o\xc5\x9bniki (priority 10000, latency offset 0 usec, available: unknown)\n            properties:\n                device.icon_name = "audio-speakers"\n    active port: <analog-output-speaker>\n  * index: 2\n    name: <alsa_output.pci-0000_0a_00.3.analog-stereo>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9059\n    volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 31,46 ms\n    max request: 6 KiB\n    max rewind: 64 KiB\n    monitor source: 3\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 371,52 ms\n    card: 2 <alsa_card.pci-0000_0a_00.3>\n    module: 8\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "ALC887-VD Analog"\n        alsa.id = "ALC887-VD Analog"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "0"\n        alsa.card = "1"\n        alsa.card_name = "HD-Audio Generic"\n        alsa.long_card_name = "HD-Audio Generic at 0xfd700000 irq 58"\n        alsa.driver_name = "snd_hda_intel"\n        device.bus_path = "pci-0000:0a:00.3"\n        sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:0a:00.3/sound/card1"\n        device.bus = "pci"\n        device.vendor.id = "1022"\n        device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"\n        device.product.id = "1457"\n        device.string = "front:1"\n        device.buffering.buffer_size = "65536"\n        device.buffering.fragment_size = "32768"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "analog-stereo"\n        device.profile.description = "Analogowe stereo"\n        device.description = "HD-Audio Generic Analogowe stereo"\n        alsa.mixer_name = "Realtek ALC887-VD"\n        alsa.components = "HDA:10ec0887,1458a182,00100302"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-pci"\n    ports:\n        analog-output-lineout: Wyj\xc5\x9bcie liniowe (priority 9900, latency offset 0 usec, available: yes)\n            properties:\n\n        analog-output-headphones: S\xc5\x82uchawki (priority 9000, latency offset 0 usec, available: no)\n            properties:\n                device.icon_name = "audio-headphones"\n    active port: <analog-output-lineout>\n    index: 7\n    name: <alsa_output.pci-0000_08_00.1.hdmi-stereo>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9050\n    volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 39,91 ms\n    max request: 6 KiB\n    max rewind: 64 KiB\n    monitor source: 8\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 371,52 ms\n    card: 1 <alsa_card.pci-0000_08_00.1>\n    module: 7\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "HDMI 0"\n        alsa.id = "HDMI 0"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "3"\n        alsa.card = "0"\n        alsa.card_name = "HDA NVidia"\n        alsa.long_card_name = "HDA NVidia at 0xfd080000 irq 56"\n        alsa.driver_name = "snd_hda_intel"\n        device.bus_path = "pci-0000:08:00.1"\n        sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:08:00.1/sound/card0"\n        device.bus = "pci"\n        device.vendor.id = "10de"\n        device.vendor.name = "NVIDIA Corporation"\n        device.product.id = "0fb9"\n        device.string = "hdmi:0"\n        device.buffering.buffer_size = "65536"\n        device.buffering.fragment_size = "32768"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "hdmi-stereo"\n        device.profile.description = "Digital Stereo (HDMI)"\n        device.description = "HDA NVidia Digital Stereo (HDMI)"\n        alsa.mixer_name = "Nvidia GPU 80 HDMI/DP"\n        alsa.components = "HDA:10de0080,104385c7,00100100"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-pci"\n    ports:\n        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: yes)\n            properties:\n                device.icon_name = "video-display"\n                device.product.name = "E2240\n       "\n    active port: <hdmi-output-0>\n
Run Code Online (Sandbox Code Playgroud)\n\n

pacmd list_sinks更改后:

\n\n
3 sink(s) available.\n    index: 0\n    name: <alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9049\n    volume: front-left: 65886 / 101% / 0,14 dB,   front-right: 65886 / 101% / 0,14 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 45,35 ms\n    max request: 6 KiB\n    max rewind: 344 KiB\n    monitor source: 0\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 2000,00 ms\n    card: 0 <alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00>\n    module: 6\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "USB Audio"\n        alsa.id = "USB Audio"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "0"\n        alsa.card = "2"\n        alsa.card_name = "USB Audio Device"\n        alsa.long_card_name = "C-Media Electronics Inc. USB Audio Device at usb-0000:01:00.0-10, full speed"\n        alsa.driver_name = "snd_usb_audio"\n        device.bus_path = "pci-0000:01:00.0-usb-0:10:1.0"\n        sysfs.path = "/devices/pci0000:00/0000:00:01.3/0000:01:00.0/usb1/1-10/1-10:1.0/sound/card2"\n        udev.id = "usb-C-Media_Electronics_Inc._USB_Audio_Device-00"\n        device.bus = "usb"\n        device.vendor.id = "0d8c"\n        device.vendor.name = "C-Media Electronics, Inc."\n        device.product.id = "0012"\n        device.product.name = "USB Audio Device"\n        device.serial = "C-Media_Electronics_Inc._USB_Audio_Device"\n        device.string = "front:2"\n        device.buffering.buffer_size = "352800"\n        device.buffering.fragment_size = "176400"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "analog-stereo"\n        device.profile.description = "Analogowe stereo"\n        device.description = "USB Audio Device Analogowe stereo"\n        alsa.mixer_name = "USB Mixer"\n        alsa.components = "USB0d8c:0012"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-usb"\n    ports:\n        analog-output-speaker: G\xc5\x82o\xc5\x9bniki (priority 10000, latency offset 0 usec, available: unknown)\n            properties:\n                device.icon_name = "audio-speakers"\n    active port: <analog-output-speaker>\n  * index: 2\n    name: <alsa_output.pci-0000_0a_00.3.analog-stereo>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9059\n    volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 38,88 ms\n    max request: 6 KiB\n    max rewind: 64 KiB\n    monitor source: 3\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 371,52 ms\n    card: 2 <alsa_card.pci-0000_0a_00.3>\n    module: 8\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "ALC887-VD Analog"\n        alsa.id = "ALC887-VD Analog"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "0"\n        alsa.card = "1"\n        alsa.card_name = "HD-Audio Generic"\n        alsa.long_card_name = "HD-Audio Generic at 0xfd700000 irq 58"\n        alsa.driver_name = "snd_hda_intel"\n        device.bus_path = "pci-0000:0a:00.3"\n        sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:0a:00.3/sound/card1"\n        device.bus = "pci"\n        device.vendor.id = "1022"\n        device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"\n        device.product.id = "1457"\n        device.string = "front:1"\n        device.buffering.buffer_size = "65536"\n        device.buffering.fragment_size = "32768"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "analog-stereo"\n        device.profile.description = "Analogowe stereo"\n        device.description = "HD-Audio Generic Analogowe stereo"\n        alsa.mixer_name = "Realtek ALC887-VD"\n        alsa.components = "HDA:10ec0887,1458a182,00100302"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-pci"\n    ports:\n        analog-output-lineout: Wyj\xc5\x9bcie liniowe (priority 9900, latency offset 0 usec, available: yes)\n            properties:\n\n        analog-output-headphones: S\xc5\x82uchawki (priority 9000, latency offset 0 usec, available: no)\n            properties:\n                device.icon_name = "audio-headphones"\n    active port: <analog-output-lineout>\n    index: 6\n    name: <alsa_output.pci-0000_08_00.1.hdmi-stereo-extra2>\n    driver: <module-alsa-card.c>\n    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY\n    state: IDLE\n    suspend cause: \n    priority: 9050\n    volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB\n            balance 0,00\n    base volume: 65536 / 100% / 0,00 dB\n    volume steps: 65537\n    muted: no\n    current latency: 30,36 ms\n    max request: 6 KiB\n    max rewind: 64 KiB\n    monitor source: 7\n    sample spec: s16le 2 k 44100 Hz\n    channel map: front-left,front-right\n                 Stereo\n    used by: 0\n    linked by: 1\n    configured latency: 40,00 ms; range is 0,50 .. 371,52 ms\n    card: 1 <alsa_card.pci-0000_08_00.1>\n    module: 7\n    properties:\n        alsa.resolution_bits = "16"\n        device.api = "alsa"\n        device.class = "sound"\n        alsa.class = "generic"\n        alsa.subclass = "generic-mix"\n        alsa.name = "HDMI 2"\n        alsa.id = "HDMI 2"\n        alsa.subdevice = "0"\n        alsa.subdevice_name = "subdevice #0"\n        alsa.device = "8"\n        alsa.card = "0"\n        alsa.card_name = "HDA NVidia"\n        alsa.long_card_name = "HDA NVidia at 0xfd080000 irq 56"\n        alsa.driver_name = "snd_hda_intel"\n        device.bus_path = "pci-0000:08:00.1"\n        sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:08:00.1/sound/card0"\n        device.bus = "pci"\n        device.vendor.id = "10de"\n        device.vendor.name = "NVIDIA Corporation"\n        device.product.id = "0fb9"\n        device.string = "hdmi:0,2"\n        device.buffering.buffer_size = "65536"\n        device.buffering.fragment_size = "32768"\n        device.access_mode = "mmap+timer"\n        device.profile.name = "hdmi-stereo-extra2"\n        device.profile.description = "Digital Stereo (HDMI 3)"\n        device.description = "HDA NVidia Digital Stereo (HDMI 3)"\n        alsa.mixer_name = "Nvidia GPU 80 HDMI/DP"\n        alsa.components = "HDA:10de0080,104385c7,00100100"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-pci"\n    ports:\n        hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: yes)\n            properties:\n                device.icon_name = "video-display"\n                device.product.name = "LG TV\n       "\n    active port: <hdmi-output-2>\n
Run Code Online (Sandbox Code Playgroud)\n\n

pactl list cards输出:

\n\n
 \n0. karta\n    Nazwa: alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00\n    Sterownik: module-alsa-card.c\n    W\xc5\x82a\xc5\x9bciciel modu\xc5\x82u: 6\n    W\xc5\x82a\xc5\x9bciwo\xc5\x9bci:\n        alsa.card = "2"\n        alsa.card_name = "USB Audio Device"\n        alsa.long_card_name = "C-Media Electronics Inc. USB Audio Device at usb-0000:01:00.0-10, full speed"\n        alsa.driver_name = "snd_usb_audio"\n        device.bus_path = "pci-0000:01:00.0-usb-0:10:1.0"\n        sysfs.path = "/devices/pci0000:00/0000:00:01.3/0000:01:00.0/usb1/1-10/1-10:1.0/sound/card2"\n        udev.id = "usb-C-Media_Electronics_Inc._USB_Audio_Device-00"\n        device.bus = "usb"\n        device.vendor.id = "0d8c"\n        device.vendor.name = "C-Media Electronics, Inc."\n        device.product.id = "0012"\n        device.product.name = "USB Audio Device"\n        device.serial = "C-Media_Electronics_Inc._USB_Audio_Device"\n        device.string = "2"\n        device.description = "USB Audio Device"\n        module-udev-detect.discovered = "1"\n        device.icon_name = "audio-card-usb"\n    Profile:\n        input:analog-mono: Wej\xc5\x9bcie Analogowe mono (odp\xc5\x82ywy: 0, \xc5\xbar\xc3\xb3d\xc5\x82a: 1, priorytet: 2, dost\xc4\x99pne: tak)\n        output:analog-stereo: Wyj\xc5\x9bcie Analogowe stereo (odp\xc5\x82ywy: 1, \xc5\xbar\xc3\xb3d\xc5\x82a: 0, priorytet: 6000, dost\xc4\x99pne: tak)\n        output:analog-stereo+input:analog-mono: Wyj\xc5\x9bcie Analogowe stereo + Wej\xc5\x9bcie Analogowe mono (odp\xc5\x82ywy: 1, \xc5\xbar\xc3\xb3d\xc5\x82a: 1, priorytet: 6002, dost\xc4\x99pne: tak)\n        output:iec958-stereo: Wyj\xc5\x9bcie Cyfrowe stereo (IEC958) (odp\xc5\x82ywy: 1, \xc5\xbar\xc3\xb3d\xc5\x82a: 0, priorytet: 5500, dost\xc4\x99pne: tak)\n        output:iec958-stereo+input:analog-mono: Wyj\xc5\x9bcie Cyfrowe stereo (IEC958) + Wej\xc5\x9bcie Analogowe mono (odp\xc5\x82ywy: 1, \xc5\xbar\xc3\xb3d\xc5\x82a: 1, priorytet: 5502, dost\xc4\x99pne: tak)\n        off: Wy\xc5\x82\xc4\x85czone (odp\xc5\x82ywy: 0, \xc5\xbar\xc3\xb3d\xc5\x82a: 0, priorytet: 0, dost\xc4\x99pne: tak)\n    Aktywny profil: output:analog-stereo+input:analog-mono\n    Porty:\n        analog-input-mic: Mikrofon (priority: 8700, latency offset: 0 usec)\n            W\xc5\x82a\xc5\x9bciwo\xc5\x9bci:\n                device.icon_name = "audio-input-microphone"\n            Cz\xc4\x99\xc5\x9b\xc4\x87 profilu: input:analog-mono, output:analog-stereo+input:analog-mono, output:iec958-stereo+input:analog-mono\n        analog-output-speaker: G\xc5\x82o\xc5\x9bniki (priority: 10000, latency offset: 0 usec)\n            W\xc5\x82a\xc5\x9bciwo\xc5\x9bci:\n                device.icon_name = "audio-speakers"\n            Cz\xc4\x99\xc5\x9b\xc4\x87 profilu: output:analog-stereo, output:analog-stereo+input:analog-mono\n        iec958-stereo-output: Wyj\xc5\x9bcie cyfrowe (S/PDIF) (priority: 0, latency offset: 0 usec)\n            Cz\xc4\x99\xc5\x9b\xc4\x87 profilu: output:iec958-stereo, output:iec958-stereo+input:analog-mono\n\n1. karta\n    Nazwa: alsa_card.pci-0000_08_00.1\n    Sterownik: module-alsa-card.c\n    W\xc5\x82a\xc5\x9bciciel modu\xc5\x82u: 7\n    W\xc5\x82a\xc5\x9bciwo\xc5\x9bci:\n        alsa.card = "0"\n        alsa.card_name = "HDA NVidia"\n        alsa.long_card_name = "HDA NVidia at 0xfd080000 irq 56"\n        alsa.driver_name = "snd_hda_intel"\n        device.bus_path = "pci-0000:08:00.1"\n        sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:08:00.1/sound/card0"\n        device.bus = "pci"\n        device.vendor.id = "10de"\n        device.vendor.name = "NVIDIA Corporation"\n        device.product.id = "0fb9"\n        device.str

Win*_*nix 2

每次重新启动 Pulse Audio 时,声音设备都会重置为HDMI. 为了让它保持设置,HDMI3您需要告诉它停止自动切换。

禁用自动设备切换

当睡眠或关机期间信号丢失时,脉冲音频会自动配置为激活默认源(您的 HDMI)。恢复或重新启动后,声音设备仍位于 HDMI 上。要覆盖此设置,请告诉 Pulse Audio 不要自动切换声音设备:

  • 编辑文件/etc/pulse/default.pa
  • 找到线load-module module-switch-on-port-available
  • #在行首插入 a以禁用自动端口切换
  • 保存文件并重新启动。

您可以使用重新加载pulseaudio -k配置更改来代替重新启动。