¿Cómo puede mi entrada de audio ser siempre el micrófono de la cámara web?

14

Cada vez que quiero usar Skype, tengo que ir a las preferencias de sonido. Y allí, gire la entrada de audio a " cámara web " y desactive el botón " silenciar ". Es bastante molesto. ¿Hay alguna manera de mantener siempre la misma configuración?

Gizmoatwork
fuente
1
También tengo este problema con una Logitech Quickacam. Después de cada reinicio, tengo que pasar por las preferencias y restablecerlo como entrada predeterminada para que funcione. Creo que tiene algo que ver con el hecho de que los dispositivos usb se cargan después de configurar las preferencias de sonido para que el pulso o alsa "no vean" el micrófono usb. Desafortunadamente, porque el "problema" no es realmente un problema, solo un inconveniente, no es tan importante que quiera enrollar las mangas de la camisa y comenzar a cavar y editar a través de los archivos de configuración.

Respuestas:

14

Cambiar la configuración predeterminada para PulseAudio

Al ejecutar pulseaudio, todos los ajustes se pueden definir colocando archivos de configuración personalizados en el .pulsedirectorio oculto de su INICIO. Si estos archivos aún no existen, puede usar los archivos estándar /etc/pulse/como plantilla. La mayoría de las entradas tienen explicaciones detalladas en estos archivos.

  • ~/.pulse/default.pa para cargar módulos y definir valores predeterminados
  • ~/.pulse/client.conf configurar un cliente para el servidor de sonido
  • ~/.pulse/daemon.conf para definir frecuencias de muestreo y tampones

Para hacer que su cámara web sea la fuente predeterminada, necesitamos conocer el nombre y el número de esta fuente mirando la lista producida por el siguiente comando en una terminal:

pacmd list-sources

Luego editamos la siguiente línea en ~/.pulse/default.pa:

set-default-source [name]

y reemplace [name]por el nombre o el número de fuente de la fuente deseada. Luego debemos asegurarnos de que la fuente no esté silenciada agregando esta línea:

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

Dé el nombre o el índice de su fuente. Puede agregar una variedad de otras configuraciones a las que se hace referencia en el Wiki de PulseAudio (ahora en la página del manual:) man pulse-cli-syntax.

Se recomienda probar primero todos los comandos a través de la interfaz de línea de comandos antes de cambiar los archivos de configuración. Esto se puede abrir pacmd en una terminal

Takkat
fuente
No hay default.pa en mi carpeta .pulse. ¿Debo crear un nuevo archivo con una línea: set-default-source x?
Para hacer
3
@ToDo la configuración predeterminada está en /etc/pulse/default.pa. Use este archivo o cópielo ~/.pulseantes de editarlo.
Takkat
En aras de la integridad: uno tiene que escribir como un nombre de dispositivo de entrada lo que está escrito dentro de los corchetes angulares de salida de pacmd list-sources. Es decir, para mi dispositivo lo era set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Hola Angel
@ Hi-Angel: gracias por eso, la respuesta vino de una versión mucho más antigua de pulseaudio. Ahora podemos usar el nombre propio de un sumidero.
Takkat
6

Estoy de acuerdo en que el problema es que Pulseaudio no configura un dispositivo USB como predeterminado porque no está presente cuando se inicia el pulso.

Entonces, mi solución a esto es conectarme al sistema que se da cuenta cuando se conecta un dispositivo USB ... ¡UDEV!

Por cierto, estas instrucciones son un poco extravagantes, y supongo que se siente cómodo haciendo cosas en la línea de comandos, y convirtiéndose en el usuario raíz para actualizar archivos udev y hacer que los scripts sean ejecutables.

Primero, descubre cosas

Identificación del USB

El primer paso es conectar su cámara web y encontrar el vendedor mágico y los números de producto escribiendo

lsusb

Estoy usando una Microsoft Lifecam, y se muestra como

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

la parte importante es 045e: 072d

Dispositivo Pulseaudio

Luego, mientras la cámara web está conectada, averigüe el nombre del dispositivo pulseaudio. Tipo

pacmd list-sources

Nuevamente, estoy buscando la línea que comienza y name:luego tiene algo acerca de una Microsoft Lifecam ... aquí está

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

entonces mi nombre de dispositivo pulseaudio será alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Reglas UDEV

Luego hice una nueva regla udev que se activa cuando se inserta un dispositivo USB con vendor = 045e y product = 072d. Para hacer una regla, cree un nuevo archivo llamado /etc/udev/rules.d/ALGO.rules (llamé a mi archivo /etc/udev/rules.d/95-webcam-mic.rules).

Pon esta línea en el archivo

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

Recuerde reemplazar ATTR {idVendor} y ATTR {idProduct} con los valores de su cámara web.

Lo que hace esta regla es ejecutar un script para configurar el dispositivo usb para la entrada, esa es la RUN+="/usr/local/bin/webcam-mic"parte.

Finalmente, configure la cámara web para la entrada

Tiempo de resumen rápido. Cada vez que conecto mi cámara web quiero ejecutar el comando

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

Pero el comando debe ejecutarse como yo (el usuario que ejecuta el escritorio), pero udev se ejecuta como usuario raíz, por lo que cuando udev ejecuta mi comando, necesito que cambie a mi usuario y luego ejecute el comando.

Entonces tenemos 2 opciones.

  1. Rápido y sucio . Haga que la regla de udev se ejecute, su james -c pacmd set-default-source... esto es tan incorrecto que ni siquiera puedo terminar de escribir el comando. ¿Qué pasa si cambias las webcams? ¿Qué pasa si instala esto para otro usuario?

  2. Ligeramente más limpio . Ejecute un script que lea un archivo predeterminado que tenga el nombre del dispositivo pulseaudio y su nombre de usuario. Si quieres los archivos están en GitHub. Primero el guión /usr/local/bin/webcam-mic. El archivo predeterminado /etc/default/webcam-micsolo necesita definir las 2 variables de shell, según el comentario en la esencia. Ponga el script en /usr/local/bin/y hágalo ejecutable. Luego, coloque el archivo predeterminado /etc/defaults/y edítelo para usar su nombre de usuario y el dispositivo pulseaudio de antes.

¡Buena suerte!

James Mitchell
fuente
Cualquier posibilidad de que pueda subir esos scripts nuevamente; parecen haber desaparecido de pastebin?
ej159
Puse el guión en una esencia en GitHub y actualicé la respuesta.
James Mitchell
2

La solución de Takkat no estaba funcionando para mí, aquí está mi solución para cualquiera que todavía tenga un problema con esto.

Hubo dos problemas para mí con la solución de Takkat. Primero, me di cuenta de que debe haber una demora después del inicio antes de que se pueda cambiar al micrófono (utilizo el comando 'dormir' en mi solución a continuación). Además, el comando 'set-default-source' estaba funcionando para encender el micrófono USB, pero de alguna manera Skype no lo estaba reconociendo y continuó usando el micrófono interno.

Para que esto funcione, primero es útil instalar pavucontrol. En pavucontrol, abra la pestaña 'Configuración' y observe lo que sucede con los comandos a continuación para verificar que las cosas funcionen según lo previsto.

Luego, desde una terminal ingrese:

pacmd

Desde allí, ingrese:

list-cards

En la salida, busque el número de índice del audio USB que desea (en mi caso, fue '1'). Luego, eche un vistazo a las líneas enumeradas en 'perfiles' tanto para la tarjeta predeterminada como para la tarjeta USB. Deben ser los mismos que los enumerados en pavucontrol, y pueden ser algo como 'salida: entrada + salida', 'apagado' o 'entrada: analógico-mono', etc. Aún en la línea de comando pacmd, el comando set-card-profile <index number> <profile name>debería cambiar la configuración en pavucontrol. Lo que queremos hacer aquí es cambiar el audio interno de dúplex a salida solamente, y el USB a entrada.

Una vez que encontremos los perfiles apropiados, queremos crear un comando de inicio para cambiar algunas configuraciones justo después del inicio. Para crear un comando de inicio, abra el tablero y busque 'aplicaciones de inicio', luego haga clic en 'agregar', luego ingrese el nombre de su elección y el comando apropiado a continuación.

Después de la prueba y error, mi comando de inicio terminó así:

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"

Explicación: Descubrí que el comando 'dormir' era necesario, esto significa que el comando se ejecuta después de una pausa, que configuré en 30 segundos (creo que esto puede ser menos, juegue con esto). El siguiente comando (después de '&&') es obtener el perfil de tarjeta predeterminado (interno) para cambiar de entrada + salida (dúplex, que es el valor predeterminado) a solo salida. El siguiente comando es para la tarjeta de sonido USB (en mi caso, el número es '1') para apagar. El último comando es que esta misma tarjeta se vuelva a encender en el modo 'input: analog-mono'

Es posible que tenga que jugar con esta configuración para encontrar la que funcione.

Ahora, cuando inicio, mi micrófono USB está listo para usar después de 30 segundos, y Skype usa el micrófono correcto.

geoffrey
fuente
0

intente esto, haga clic en el icono del altavoz en el panel superior, las preferencias de clic. allí puede seleccionar una opción de entrada predeterminada para su micrófono y probablemente cambiar alguna configuración de hardware para que funcione correctamente.

helios66
fuente
1
Gracias por su ayuda, pero eso es lo que estoy haciendo ahora. Sin embargo, no veo ninguna forma de hacer que esta sea una configuración predeterminada. De vez en cuando, tendré que volver a hacerlo porque la configuración habría cambiado.
Gizmoatwork