web-dev-qa-db-fra.com

Comment mon entrée audio peut-elle toujours être le microphone de la webcam?

Chaque fois que je veux utiliser Skype, je dois aller dans les préférences sonores. Et là, réglez l'entrée audio sur "webcam" et décochez le bouton "muet". C'est assez énervant. Est-il possible de toujours garder la même configuration?

13
Gizmoatwork

Modification des paramètres par défaut pour PulseAudio

Lors de l'exécution de pulseaudio, tous les paramètres peuvent être définis en plaçant des fichiers de configuration personnalisés dans le répertoire caché .Pulse de votre HOME. Si ces fichiers n'existent pas encore, vous pouvez utiliser les fichiers standard de /etc/Pulse/ comme modèle. La plupart des entrées ont des explications verbeuses dans ces fichiers.

  • ~/.Pulse/default.pa pour charger des modules et définir les valeurs par défaut
  • ~/.Pulse/client.conf pour configurer un client pour le serveur de sons
  • ~/.Pulse/daemon.conf pour définir les fréquences d'échantillonnage et les tampons

Pour que votre webcam soit la source par défaut, nous devons connaître le nom et le numéro de cette source en consultant la liste générée par la commande suivante dans un terminal:

pacmd list-sources

Nous éditons ensuite la ligne suivante dans ~/.Pulse/default.pa:

set-default-source [name]

et remplacez [name] par le nom ou le numéro de source de la source souhaitée. Nous devons ensuite nous assurer que la source est désactivée en ajoutant cette ligne:

set-source-mute [name]|[#n]> 0

Donnez le nom ou l'index de votre source. Vous pouvez ajouter divers autres paramètres référencés dans le wiki de PulseAudio (à présent sur la page de manuel: man Pulse-cli-syntax).

Il est recommandé de tester d'abord toutes les commandes via l'interface de ligne de commande avant de modifier les fichiers de configuration. Cela peut être ouvert avec pacmd dans un terminal

13
Takkat

Je conviens que le problème est que Pulseaudio ne définit pas un périphérique USB par défaut, car il n’est pas présent au démarrage de Pulse.

Soo ma solution à cela est d’attacher au système ce qui remarque quand un périphérique USB est connecté ... UDEV!

En passant, ces instructions sont légèrement funky, et je suppose que vous êtes à l'aise pour faire des choses en ligne de commande, et que vous devenez l'utilisateur root pour mettre à jour les fichiers udev et rendre les scripts exécutables.

Tout d'abord, découvrir des trucs

Identifiant USB

La première étape consiste à brancher votre webcam et à trouver le numéro du vendeur magique et les numéros de produit en tapant

lsusb

J'utilise une Microsoft Lifecam, et cela se voit

Bus 001 Device 013: ID 045e:072d Microsoft Corp.

la partie importante est 045e: 072d

Appareil Pulseaudio

Ensuite, pendant que la webcam est connectée, recherchez le nom du périphérique pulseaudio. Type

pacmd list-sources

Encore une fois, je cherche la ligne qui commence name: puis qui a quelque chose à voir avec une Microsoft Lifecam ... la voilà

name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>

mon nom de périphérique pulseaudio sera donc alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Règles UDEV

Ensuite, j'ai créé une nouvelle règle udev qui est déclenchée lorsqu'un périphérique USB avec vendor = 045e et product = 072d est inséré. Pour créer une règle, créez un nouveau fichier appelé /etc/udev/rules.d/QUELQUE CHOSE.rules (j'ai appelé mon fichier /etc/udev/rules.d/95-webcam-mic.rules).

Mettez cette ligne dans le fichier

SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"

N'oubliez pas de remplacer le ATTR {idVendor} et ATTR {idProduct} par les valeurs pour votre webcam.

Le but de cette règle est d’exécuter un script pour définir le périphérique USB pour l’entrée, c’est la partie RUN+="/usr/local/bin/webcam-mic".

Enfin, réglez la webcam pour la saisie

Aperçu rapide temps. Chaque fois que je connecte ma webcam, je veux exécuter la commande

pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Mais la commande doit être exécutée en tant que me (l'utilisateur exécutant le bureau), mais udev s'exécute en tant qu'utilisateur root. Ainsi, lorsque udev exécute ma commande, j'ai besoin de changer à mon utilisateur puis exécutez la commande.

Nous avons donc 2 options.

  1. Rapide et sale . Faites en sorte que la règle udev exécute su james -c pacmd set-default-source... c'est tellement mauvais que je ne peux même pas finir de taper la commande. Et si vous changez de webcam? Et si vous installez ceci pour un autre utilisateur?

  2. Légèrement plus propre . Exécutez un script qui lit un fichier par défaut contenant le nom du périphérique pulseaudio et votre nom d'utilisateur. Si vous voulez les fichiers, ils sont sur GitHub. D'abord le script /usr/local/bin/webcam-mic . Le fichier par défaut /etc/default/webcam-mic doit simplement définir les 2 variables du shell, comme indiqué dans le commentaire de la Gist. Placez le script dans /usr/local/bin/ et rendez-le exécutable. Ensuite, placez le fichier par défaut dans /etc/defaults/ et éditez-le pour utiliser votre nom d'utilisateur et le périphérique pulseaudio de la version précédente.

Bonne chance!

6
James Mitchell

La solution de Takkat ne fonctionnait pas pour moi, voici ma solution pour ceux qui ont encore un problème avec cela.

La solution de Takkat posait deux problèmes pour moi. Tout d'abord, j'ai réalisé qu'il fallait un délai après le démarrage pour que le passage au microphone puisse avoir lieu (j'utilise la commande 'veille' dans ma solution ci-dessous). De plus, la commande 'set-default-source' fonctionnait pour allumer le microphone USB, mais d'une manière ou d'une autre, Skype ne le reconnaissait pas et continuait à utiliser le microphone interne.

Pour que cela fonctionne, il est d’abord utile d’installer pavucontrol. Dans pavucontrol, ouvrez l'onglet 'Configuration' et observez ce qui se passe avec les commandes ci-dessous pour vérifier que tout fonctionne comme prévu.

Ensuite, depuis un terminal, entrez:

pacmd

De là, entrez:

list-cards

Dans la sortie, recherchez le numéro d’index de l’audio USB que vous souhaitez (dans mon cas, il s’agissait de "1"). Consultez ensuite les lignes répertoriées sous "Profils" pour la carte par défaut et la carte USB. Ceux-ci devraient être les mêmes que ceux listés dans pavucontrol, et peuvent être quelque chose comme 'ouput: input + output', 'off', ou 'input: analog-mono' etc. Toujours dans la ligne de commande pacmd, la commande set-card-profile <index number> <profile name> devrait modifier les paramètres dans pavucontrol. Ce que nous voulons faire ici est de basculer l’audio interne du duplex vers la sortie uniquement, et le port USB vers l’entrée.

Une fois que les profils appropriés ont été trouvés, nous voulons créer une commande de démarrage pour modifier quelques paramètres juste après le démarrage. Pour créer une commande de démarrage, ouvrez le tableau de bord et recherchez "Applications de démarrage", puis cliquez sur "Ajouter", puis entrez le nom de votre choix et la commande appropriée ci-dessous.

Après essais et erreurs, ma commande de démarrage ressemblait à ceci:

bash -c "sleep 30 && pacmd set-card-profile 0 output:analog-stereo && pacmd set-card-profile 1 off && pacmd set-card-profile 1 input:analog-mono"

Explication: J'ai trouvé que la commande 'sleep' était nécessaire, cela signifie que la commande est exécutée après une pause, que je règle à 30 secondes (je pense que cela peut être moins, jouez avec cela). La commande suivante (après le '&&') consiste à faire basculer le profil de carte (interne) par défaut (entrée + sortie) (duplex, qui est la valeur par défaut) uniquement pour la sortie. La commande suivante est pour la carte son USB (dans mon cas, le nombre est "1") pour éteindre. La dernière commande est que cette même carte se rallume en mode 'input: analog-mono'

Vous devrez peut-être jouer avec ces paramètres pour trouver celui qui fonctionne.

Maintenant, au démarrage, mon microphone USB est prêt à être utilisé au bout de 30 secondes et Skype utilise le microphone approprié.

2
geoffrey

essayez ceci, cliquez sur l'icône du haut-parleur sur votre panneau supérieur, les préférences de clic. Là, vous pouvez sélectionner une option d’entrée par défaut pour votre microphone et probablement modifier une configuration matérielle pour que tout fonctionne correctement.

0
helios66