Selon la situation, j'utilise mes haut-parleurs ou mon casque pour la sortie audio. Étant donné que mon casque est un casque USB, il se comporte comme son propre périphérique audio.
Actuellement, je bascule entre les périphériques de sortie audio en cliquant sur l'icône du haut-parleur dans le bac en haut à droite, où je sélectionne Paramètres de son, passe à l'onglet Sortie et choisit le périphérique que je veux.
Ce que je me demande, c'est s'il existe un moyen plus simple/plus rapide de basculer dans mon casque USB. Peut-être une icône de plateau dédié, un mappage de clé, ou autre
J'utilise Ubuntu 10.04 avec le bureau Gnome par défaut.
Pour modifier le périphérique de sortie audio par défaut à partir de la ligne de commande, vous pouvez utiliser l'utilitaire de ligne de commande pacmd
Pulse Audio.
J'ai trouvé le besoin de faire la même chose aujourd'hui, en voulant basculer entre un casque et des haut-parleurs, tous deux connectés à des cartes son séparées. Voici le script Shell que j'ai écrit pour le faire:
#!/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
Remarques:
pacmd
name__. Si vous avez plus de deux périphériques audio et souhaitez en changer, vous devez remplacer la logique de la ligne 7 par certaines conditions.Eh bien, vous pouvez installer pavucontrol
, il affiche les applications avec la sélection du périphérique audio sur le premier onglet, cela vous épargnera quelques efforts. Mais ce que vous voulez vraiment, je pense, c'est marquer votre casque USB comme périphérique par défaut, puis chaque fois que vous le branchez, tout le son y sera redirigé, et lorsque vous le déconnectez, il revient aux haut-parleurs. Sans effort, vraiment.
Bien sûr, le changement de périphérique à l'aide de l'applet fonctionne également très bien. Mais ce qui est bien avec l’écriture d’un script, c’est que c’est super rapide. Je mets le mien par exemple sur le raccourci clavier alt + s. Ainsi, lorsque je souhaite passer du casque aux haut-parleurs, il suffit d'appuyer sur alt + s.
En tous cas. Andrew a dit:
Si vous avez plus de deux périphériques audio et souhaitez en changer, vous devez remplacer la logique de la ligne 7 par certaines conditions.
C'est ce que j'ai fait. Je le partage, au cas où quelqu'un aurait des problèmes avec:
#!/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
Ce que j'ai fait différemment, c'est a) trouver le puits actif dans une boucle for. Et b) passer au prochain puits en augmentant l'index de 1. Ensuite, je module le résultat en fonction du nombre de puits. Cela assure que par exemple lorsqu’il ya 3 éviers, (2 + 1)% 3 = 0. Ainsi, à partir de l'indice de puits 2, nous passerions à l'indice de puits 0.
De cette façon, le commutateur permet de se déplacer vers le haut à travers les éviers disponibles.
La question est assez ancienne mais ma réponse pourrait quand même être utile aux utilisateurs de GNOME 2. J'ai utilisé PulseAudio Mixer Applet pour le problème exact décrit ici. Vous pouvez modifier les périphériques d'entrée et de sortie directement dans le menu du panneau. C'est le moyen le plus pratique que j'ai trouvé.
Merci pour les scripts! J'ai ajouté une partie pour l'entrée (microphone) également au cas où quelqu'un voudrait l'utiliser:
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)
Pour parcourir votre liste de périphériques audio, utilisez le script suivant:
#!/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;
Tout le mérite revient à tsvetan depuis le forum Ubunt .
Je me suis inspiré du script Andrews pour l’utiliser avec notify-osd pour annoncer ce qu’il venait de faire. Modifiez les lignes avec les noms en fonction de vos besoins.
#!/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
Je cherchais un moyen de basculer entre les haut-parleurs internes de mon ordinateur portable et une station de base d'aéroport Apple connectée à ma chaîne stéréo. J'ai décidé d'attribuer des raccourcis clavier pour basculer. Je voulais que la fenêtre des préférences audio apparaisse pendant une seconde pour donner une confirmation visuelle du commutateur et a ensuite utilisé wmctrl pour fermer la fenêtre.
(J'ai utilisé les touches de raccourci Ctrl + F8 et Ctrl + F9, car la fonction Fn de ces touches sur mon ordinateur portable permet d'augmenter et de diminuer le volume, de sorte qu'il semblait évident que les fonctions Ctrl modifient la sortie audio.)
J'ai utilisé les 2 scripts suivants (presque identiques):
#! /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
Le premier passe à la station de base Apple (que j'ai affectée à ctrl + F9) et le second revient aux haut-parleurs internes (ctrl + F8). Cela suppose que ce sont les deux seuls périphériques de sortie installés.
Voici un petit script qui fait défiler les puits d’audio pour la fenêtre actuellement active: https://Gist.github.com/rif/01ffb5e3eb45d2e4e6ebb4652b3b19ce
Nécessite pacmd et xdotool
J'ai eu le même problème et j'ai écrit un petit applet indicateur pour le bureau Ubuntu Unity: