J'ai de beaux casques d'écoute sans fil que j'utilise de temps en temps, en plus de mes haut-parleurs et de mon microphone normal.
J'aimerais écrire un script pour basculer entre une source d'entrée et de sortie et une autre, essentiellement un commutateur entre mon casque et mes haut-parleurs + microphone.
J'aimerais changer entre ceci:
...et ça:
Existe-t-il un moyen pour moi d’écrire un transfert entre les deux entrées et les sorties? Essentiellement, je cherche quelque chose comme ceci:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
Y at-il un moyen de script cela?
audio
alsa
pulseaudio
Naftuli Kay
la source
la source
man pactl
options de ligne de commande PulseAudio.Réponses:
Comme @ Teresa-e-Junior a souligné
pactl
l'outil à utiliser:Tout d’abord, nous voudrons peut-être obtenir les identifiants de nos puits d’AP. Sur mon système, voici ce que je reçois:
Le puits 1 est actuellement mon puits par défaut.
Mais maintenant, je veux que tous mes flux actuels et futurs soient lus via HDMI (c-à-d. Évier 0).
Il y a une commande pour définir le récepteur par défaut pour PulseAudio, mais cela ne semble pas avoir d'effet sur mon PC:
Au lieu de cela, de nouveaux flux semblent être connectés au récepteur auquel un flux a été déplacé le plus récemment.
Alors disons à pactl de déplacer tous les flux en cours de lecture vers le puits
0
. Nous devons d’abord les lister:Ok, nous avons deux flux (ID 290 et 295) qui sont tous deux attachés à couler
1
.Passons-les à couler
0
:Donc, ça devrait être ça. Maintenant, nous devons juste faire un script qui fait le travail pour nous:
Vous pouvez l'appeler avec un ID de récepteur ou un nom de récepteur en tant que paramètre (c'est-à-dire
0
ou quelque chose comme celaalsa_output.pci-0000_01_00.1.hdmi-surround
).Vous pouvez maintenant attacher ce script à un événement udev ou à un raccourci clavier.
la source
0 sink input(s) available.
? Mais ce lecteur flash merdique est toujours en lecture audio? Et je vois flash player dans laclient(s) logged in
section depacmd list
$ pacmd set-default-sink INDEX
est toujours nécessaire pour mon script, sinon les commandes du clavier permettant de modifier le volume continuent à utiliser l'ancienne source de récepteur.Les commandes suivantes permettent de manipuler le serveur de son PulseAudio:
Voici quelques exemples de leur fonctionnement.
pacmd list-sinks
:: nom de la liste ou numéro d'index des puits possiblespacmd set-default-sink [sinkname]
:: régler la sortie par défaut évierpacmd set-default-source [sourcename]
:: définir l' entrée par défautpacmd set-sink-volume [index] [volume]
:: régler le volume de l'évierpacmd set-source-volume index volume
:: plage de contrôle du volume 0 - 65536 (plus le chiffre est bas, plus le volume est bas)Ce ne sont que quelques exemples que j'ai extraits de la page de wiki et de manuel. Référencez -le pour plus d'informations. Ou vous pouvez afficher les commandes
--help
ou laman
page.Un outil de ligne de commande existe déjà à cette fin. Son nom est ponymix . C'est un mélangeur en ligne de commande pour PulseAudio. Le lien fourni est pour les projets github. Il a été développé par un ami et collègue Arch Linux Trusted User / Developer. Si vous n’exécutez pas Arch, vous pouvez simplement le compiler à partir de la source en utilisant
make
etsudo make install
.la source
Sur mon ordinateur portable fonctionnant sous Fedora 20, la sortie HDMI ne figure pas en tant que puits dans le profil par défaut, mais comme un autre profil lui - même.
J'ai seulement 1 évier comme celui-ci, de la bonne musique jouant sur les haut-parleurs de mon ordinateur portable:
Si je lance
pactl set-card-profile 0 output:hdmi-stereo
alors belle musique joue via HDMI. Je reçois:Pour revenir au défaut, je cours
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. De toute façon, le défaut est de nouveau présent si je redémarre.La liste des profils de ma carte est quelque part sur la
pactl list cards
sortie.la source
set-card-profile
n'a pas été mentionné précédemment, et c'est l'information la plus importante sur cette réponse.En étendant la réponse acceptée par @cinelli, je suis arrivé avec un script qui
Changer au besoin!
la source