Audiogerät schnell in KDE ändern

11932
Ryan

Ich bin vor kurzem von Windows zu OpenSUSE (mit KDE) gewechselt und durchlebe immer noch die Lernkurve.

Ich wechsle ziemlich häufig zwischen der Verwendung meiner Kopfhörer mit eingebautem Mikrofon und den eingebauten Lautsprechern meines Monitors und dem Mikrofon meiner Webcam. Mit Hilfe des Phonon-Menüs über KMix (Beispiel unten) kann ich die Geräte neu anordnen, um das Gerät, das ich verwenden möchte, an die Spitze zu setzen, aber ich würde es vorziehen, es mit einem Hotkey zu tun, ähnlich wie bei dem, was Die Audio Switcher- Anwendung funktioniert unter Windows. Wenn ich es tue, möchte ich auch den Masterkanal auf den neuen einstellen, damit ich das Audio leicht anpassen kann.

enter image description here

Gibt es einen Weg durch ein Skript, mit dem ich (a) im Handumdrehen ein neues Standard-Audiowiedergabegerät und ein Audio-Aufnahmegerät auswählen kann (b) und gleichzeitig den Masterkanal mit einem Hotkey oder auf dasselbe Wiedergabegerät (c) setzen kann andere schnelle Methode auf dem Desktop?

15

2 Antworten auf die Frage

10
user.dz

Die meisten GUI-Kits verwenden dasselbe Backend-PulseAudio. Verwenden Sie pactldiese 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

  1. Ü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 
  2. 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 
  3. 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 
  4. 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 qdbuswie folgt einstellen :

  1. 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 
  2. 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 
  3. 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 
Das sieht nach einer großartigen Antwort aus, aber ich glaube nicht, dass meine Installation PulseAudio verwendet. Ich kann die Befehle verwenden, aber die aktuelle Standardquelle und -senke stimmt nicht mit den Angaben im Phonon-Menü überein. Und sie zu ändern scheint keine Wirkung zu haben. Ryan vor 8 Jahren 0
@ Ryan, ich habe es gerade in openSUSE 13.1 KDE getestet, scheint gut zu funktionieren. Das einzige, was mir aufgefallen ist: Das Phonon-Panel aktualisiert seine Schnittstelle nicht, wenn sich Einstellungen von PulseAudio geändert haben. Könnten Sie `pavucontrol` installieren und dann die 3 zusammen auf dem Bildschirm öffnen (Terminal mit pactl + pavucontrol panel + phonon panel). Versuchen Sie, die Einstellungen von jedem zu ändern und beobachten. Irgendwann müssen Sie phonon wieder öffnen, um den tatsächlichen Einstellungsstatus zu sehen. user.dz vor 8 Jahren 0
Ich habe herausgefunden, dass Sie ein neues Profil erstellen können, das beide miteinander verknüpft, sodass sie immer sichtbar sind, um die kurze Liste "pactl list short sinks" anzuzeigen, siehe meine Antwort unten Francesco vor 6 Jahren 0
1
Francesco

Dank dieser Antwort fand ich endlich eine Lösung, siehe die folgende Anweisung

Zeige immer HDMI-Ausgabe in der Mischung Wir erstellen ein neues Profil, das die beiden Profile "Analog-Audio" und "HDMI-Audio" verbindet.

/usr/share/pulseaudio/alsa-mixer/profile-sets/default.confNach meinem Verständnis listet diese Datei alle Mapping-Profile zwischen Alsa und Pulseaudio auf.

1.
Finden Sie die Abbildung, die auf Ihre Beziehung stehen Analog profileund HDMI profileDefinition. ( Beschreibung: sollte die MATCH Geräteprofile in gezeigte Audio Volume Kde Einstellmodul)

Für mich sind folgende:

[Mapping analog-stereo] device-strings = front:%f channel-map = left,right paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic priority = 10  [Mapping hdmi-stereo-extra1] description = Digital Stereo (HDMI 2) device-strings = hdmi:%f,1 paths-output = hdmi-output-1 channel-map = left,right priority = 2 direction = output 

2.
Auf der Basis der obigen Mapping-Definition habe ich das folgende neue Profil erstellt, das die beiden obigen gruppiert:

[Profile output:analog-stereo+output:hdmi-stereo-extra1] description = All output-mappings = analog-stereo hdmi-stereo-extra1 input-mappings = analog-stereo 

3.
Starten Sie den puls audio mit diesem Befehl neu:

pulseaudio --kill; sleep 1; pulseaudio --start 

4.
Gehen Sie zu KDE-Telefoneinstellungen> Audio-Hardware-Setup und wählen Sie das neue Profil aus. 2 profiles in the mixer

Jetzt sollten Sie beide Profile in der Mischung sehen und so können Sie einfach wechseln:

HDMI is always shown in the mixer now
Ich würde vorschlagen, diesen Plasmoidmischer zu verwenden: https://store.kde.org/p/1100894/

(zusätzlicher Schritt) Erzwinge beide Ausgänge aktiviert

Wenn Sie nichts dagegen haben, dass sowohl der Computerlautsprecher als auch das Fernsehgerät gleichzeitig Audioausgabe haben (Sie müssen also die Audioausgabe grundsätzlich nicht umschalten)?

Sie können die folgende Einstellung auswählen und dann haben Sie einen neuen Eintrag im Mixer

enter image description here