Die meisten GUI-Kits verwenden dasselbe Backend-PulseAudio. Verwenden Sie pactl
diese Option, um ein Kontrollskript zu schreiben.
NAME pactl - Control a running PulseAudio sound server DESCRIPTION pactl can be used to issue control commands to the PulseAudio sound server. pactl only exposes a subset of the available operations. For the full set use the pacmd(1).
Quelle: man pactl
Überprüfen der verfügbaren Ausgabesenken
$ pactl list short sinks 0 alsa_output.pci-0000_01_00.1.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 1 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
Um verfügbare Eingangsquellen zu überprüfen
$ pactl list short sources 0 alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 1 alsa_output.pci-0000_00_1b.0.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 2 alsa_input.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
Standard prüfen
$ pactl info Server String: /run/user/1000/pulse/native Library Protocol Version: 30 Server Protocol Version: 30 Is Local: yes Client Index: 2 Tile Size: 65472 User Name: user Host Name: userpc Server Name: pulseaudio Server Version: 6.0 Default Sample Specification: s16le 2ch 44100Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo Default Source: alsa_input.pci-0000_00_1b.0.analog-stereo
Standard festlegen
pactl set-default-source id-or-name pactl set-default-sink id-or-name
Beispiel:
pactl set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
oder:
pactl set-default-source 2 pactl set-default-sink 1
Anmerkungen:
Dies betrifft nur neue Streams. Sie müssen die aktuellen laufenden Streams verschieben. Verwenden Sie also:
pacmd move-sink-input <stream-id> <sink-id/name>
Schönes Beispiel zum Kopieren: Umschalten auf HDMI-Audio, wenn HDMI an einen Laptop angeschlossen ist (14.04)
Einige Karten verfügen über mehrere umschaltbare Ports. Möglicherweise ist der von Ihnen gewünschte nicht der Standard.
Überprüfen Sie die verfügbaren Ports:
$pactl list sinks Sink #1 State: RUNNING Name: alsa_output.pci-0000_00_1b.0.analog-stereo Description: Built-in Audio Analog Stereo Driver: module-alsa-card.c ... Ports: analog-output-speaker: Speakers (priority: 10000, not available) analog-output-headphones: Headphones (priority: 9000, available) Active Port: analog-output-headphones Formats: pcm ...
Um es einzustellen:
pactl set-sink-port <sink-id/name> <port-name>
Beispiel:
pactl set-sink-port 1 analog-output-headphones
Um den Masterkanal zu ändern
Im Anschluss an dieses Lernprogramm können Sie den Masterkanal qdbus
wie folgt einstellen :
Suchen Sie mit dem folgenden Befehl den Master Mixer für jedes Ihrer Geräte. Stellen Sie zuerst den Masterkanal manuell auf den Kanal ein, den Sie überprüfen möchten, und führen Sie dann den Befehl aus:
qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
Verwenden Sie das Ergebnis dieses Befehls und die Audiosenke, die Sie steuern möchten, und verwenden Sie die folgende Syntax, um Ihren Masterkanal zu ändern:
qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
Am Ende muss das Skript das gesamte aktuelle Audio auf einen neuen Kanal umstellen, es als Standard festlegen und es als Master-Kanal wie folgt einstellen:
#!/bin/bash pactl set-default-sink alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo pactl set-default-source alsa_input.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-mono INPUTS=($(pacmd list-sink-inputs | grep index | awk '')) for i in $; do pacmd move-sink-input $i alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo &> /dev/null; done qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "PulseAudio::Playback_Devices=:1" "alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo" 2>&1 > /dev/null