it-swarm.com.de

Audioausgabegerät, schneller Schalter?

Je nach Situation verwende ich entweder meine Lautsprecher oder mein Headset für die Audioausgabe. Da es sich bei meinem Headset um ein USB-Headset handelt, verhält es sich wie ein eigenes Audiogerät.

Gegenwärtig wechsle ich zwischen Audioausgabegeräten, indem ich auf das Lautsprechersymbol in der oberen rechten Leiste klicke, die Audioeinstellungen auswähle, auf die Registerkarte Ausgabe gehe und dort das gewünschte Gerät auswähle.

Was ich mich frage ist, ob es eine einfachere/schnellere Möglichkeit gibt, zu meinem USB-Headset zu wechseln? Vielleicht ein spezielles Taskleistensymbol, eine Tastenzuordnung oder so?

Ich verwende Ubuntu 10.04 mit dem Standard-Gnome-Desktop.

19
andol

Um das Standard-Audioausgabegerät über die Befehlszeile zu ändern, können Sie das Befehlszeilenprogramm pacmd Pulse Audio verwenden.

Ähnliches musste ich heute tun, als ich zwischen Kopfhörern und Lautsprechern wechseln wollte, die beide an separate Audiokarten angeschlossen waren. Hier ist das Shell-Skript, das ich dazu geschrieben habe:

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

Anmerkungen:

  • Dadurch wird zwischen den ersten beiden Audioausgabegeräten gewechselt, die das Dienstprogramm pacmd auflistet. Wenn Sie mehr als zwei Audiogeräte haben und zu einem anderen wechseln möchten, müssen Sie die Logik in Zeile 7 durch einige Bedingungen ersetzen.
  • Das Austauschen des Standard-Senkengeräts hat für die derzeit ausgeführten Anwendungen keine Auswirkung. Sie werden weiterhin auf dem vorherigen Gerät ausgegeben. Dieses Skript verschiebt auch das Sink-Ziel für alle vorhandenen Eingaben. Wenn Sie dieses Skript also ausführen, während Musik auf einem Gerät abgespielt wird, wechselt es sofort zum anderen. Wenn Sie möchten, dass die vorhandenen Anwendungen auf dem vorherigen Gerät fortgesetzt werden, kommentieren Sie die letzte Zeile aus (und Zeile 5, wenn Sie möchten).
11
Andrew

Nun, Sie können pavucontrol installieren. Es werden Apps mit Auswahl der Audiogeräte auf der ersten Registerkarte angezeigt. Dies erspart Ihnen einige Mühen. Aber was Sie wirklich wollen, ist, dass Sie Ihr USB-Headset als Standardgerät markieren. Jedes Mal, wenn Sie es anschließen, wird der gesamte Ton zu diesem Gerät umgeleitet, und wenn Sie es ausstecken, wird es wieder zu den Lautsprechern zurückgeleitet. Wirklich mühelos.

7
vava

Natürlich funktioniert auch das Umschalten von Geräten mit dem Applet einwandfrei. Aber das Coole am Schreiben eines Drehbuchs ist, dass es superschnell ist. Ich habe meine zum Beispiel auf das Tastenkürzel alt + s gelegt. Wenn ich also von Kopfhörer auf Lautsprecher umschalten möchte, muss ich nur Alt + S drücken.

Sowieso. Andrew sagte:

Wenn Sie mehr als zwei Audiogeräte haben und zu einem anderen wechseln möchten, müssen Sie die Logik in Zeile 7 durch einige Bedingungen ersetzen.

Das ist, was ich tat. Ich teile es, falls jemand Probleme damit hat:

#!/usr/bin/env bash

#sinks=($(pacmd list-sinks | grep index | \
#    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

#find active sink
active=0
for i in ${sinks[*]}
do
    if [ $i -eq 0 ]
        then active=$((active+1))
        else break
    fi
done

#switch to next sink
swap=$(((active+1)%${#sinks[@]}))

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

Was ich anders gemacht habe, ist a) die aktive Senke in einer for-Schleife zu finden. Und b) zur nächsten Senke wechseln, indem der Index um 1 erhöht wird. Dann moduliere ich das Ergebnis durch die Anzahl der Senken. Dies stellt sicher, dass z.B. Bei 3 Senken ist (2 + 1)% 3 = 0. Von Senkenindex 2 würden wir also zu Senkenindex 0 wechseln.

Auf diese Weise kann der Schalter durch die verfügbaren Spülen nach oben bewegt werden.

3
traumtaenzer

Die Frage ist ziemlich alt, aber meine Antwort kann für GNOME 2-Benutzer immer noch nützlich sein. Ich habe PulseAudio Mixer Applet für das hier beschriebene Problem verwendet. Sie können die Eingabe- und Ausgabegeräte direkt im Bedienfeldmenü ändern. Es ist der bequemste Weg, den ich gefunden habe.

3
dAnjou

Danke für die Skripte! Ich habe einen Teil für den Eingang (Mikrofon) hinzugefügt, falls jemand ihn benutzen möchte:

while read line ; do
  case $line in 
    *\*\ index*) x=1 ;;
    index*) x=0 ;;
    name*) 
      source=$(echo $line | sed -e "s/.*<//;s/>.*//")
      if [[ $x = "0" ]] ; then
        pacmd set-default-source $source &> /dev/null
      fi ;;
  esac
done < <(pacmd list-sources | grep -e alsa_input -e index)
2
Subbeh

Verwenden Sie das folgende Skript, um durch die Liste der Audiogeräte zu blättern:

#!/bin/bash

declare -i sinks=(`pacmd list-sinks | sed -n -e 's/\**[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`)
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i next_sink_index=${sinks[0]}

#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
    next_sink_index=${sinks[$ord]}
    break
fi
let ord++
done

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high --hint=string:x-canonical-private-    synchronous: "Sound output switched to" "$line"
    exit
fi
let ndx++
done;

Alle Kredite gehen an tsvetan aus dem buntu-Forum .

2
guttermonk

Ich habe auf Andrews Skript aufgebaut, um es mit notify-osd ankündigen zu lassen, was es gerade getan hat. Bearbeiten Sie die Zeilen mit den Namen nach Ihren Wünschen.

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap 

for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

if [ "$swap" = "0" ]; then
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Corsair 2.1 Speakers!" 

else
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Logitech G930 Headset!" 

fi
1
Kveras

Ich suchte nach einer Möglichkeit, um zwischen den internen Lautsprechern meines Laptops und einer Apple Flughafen-Basisstation umzuschalten, die an meine Stereoanlage angeschlossen ist. Ich beschloss, Hotkeys zuzuweisen, um zu wechseln. Ich wollte, dass das Audio-Einstellungsfenster für eine Sekunde auftaucht, um eine visuelle Bestätigung des Schalters zu geben, und benutzte wmctrl, um das Fenster danach zu schließen.

(Ich habe Strg + F8 und Strg + F9 als Tastenkürzel verwendet, da die Fn-Funktion dieser Tasten auf meinem Laptop zum Erhöhen und Verringern der Lautstärke dient. Es schien also offensichtlich, dass die Strg-Funktionen die Audioausgabe ändern.)

Ich habe die folgenden 2 (fast identischen) Skripte verwendet:

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 1
sleep .8 
wmctrl -c "Sound Preferences"
exit

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 0
sleep .8 
wmctrl -c "Sound Preferences"
exit

Der erste wechselt zur Basisstation Apple (die ich mit Strg + F9 belegt habe) und der zweite wechselt zurück zu den internen Lautsprechern (Strg + F8). Dies setzt voraus, dass dies die einzigen 2 installierten Ausgabegeräte sind.

1
retrokid

Hier ist ein kleines Skript, das die Audiosenken für das aktuell fokussierte Fenster zyklisch durchläuft: https://Gist.github.com/rif/01ffb5e3eb45d2e4e6ebb4652b3b19ce

Erfordert pacmd und xdotool

0
rif

Ich hatte das gleiche Problem und schrieb ein kleines Indikator-Applet für den Ubuntu Unity-Desktop:

https://github.com/lkettenb/sound-output-switcher

http://www.capslockblog.com/images/misc/Screenshot.png

0
Lukas