Concordo que o problema é que o Pulseaudio não define um dispositivo USB como padrão porque não está presente quando o pulso é iniciado.
Soo minha solução para isso é ligar-se ao sistema que faz aviso quando um dispositivo USB está conectado ... UDEV!
BTW, estas instruções são um pouco funky, e estou assumindo que você está confortável fazendo coisas na linha de comando, e se tornando o usuário root para atualizar os arquivos do udev, e tornando os scripts executáveis.
Primeiro, descubra coisas
ID do USB
O primeiro passo é conectar sua webcam e encontrar o fornecedor mágico e os números dos produtos digitando
lsusb
Estou usando um Microsoft Lifecam e ele é exibido como
Bus 001 Device 013: ID 045e:072d Microsoft Corp.
a parte importante é 045e: 072d
Dispositivo Pulseaudio
Em seguida, enquanto a webcam estiver conectada, descubra o nome do dispositivo pulseaudio. Digite
pacmd list-sources
Mais uma vez, estou procurando a linha que inicia name:
e, em seguida, algo sobre um Microsoft Lifecam ... aqui está
name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>
então meu nome do dispositivo pulseaudio será alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
regras UDEV
Em seguida, criei uma nova regra do udev que é acionada quando um dispositivo USB com o fornecedor = 045e e o produto = 072d é inserido. Para criar uma regra, crie um novo arquivo chamado /etc/udev/rules.d/
ALGO .rules
(chamei meu arquivo /etc/udev/rules.d/95-webcam-mic.rules
).
Coloque esta linha no arquivo
SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"
Lembre-se de substituir o ATTR {idVendor} e o ATTR {idProduct} pelos valores da sua webcam.
O que esta regra faz é executar um script para configurar o dispositivo usb para entrada, que é a RUN+="/usr/local/bin/webcam-mic"
part.
Por fim, defina a webcam para entrada
Tempo de resumo rápido. Toda vez que eu conecto minha webcam, eu quero executar o comando
pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
Mas o comando precisa ser executado como me (o usuário executando a área de trabalho), mas o udev é executado como o usuário root - assim, quando o udev executa meu comando, ele precisa ser alterado para meu usuário e executado o comando.
Portanto, temos duas opções.
-
Rápido e sujo . Torne a regra do udev executada su james -c pacmd set-default-source...
isso é tão errado que eu não consigo nem terminar de digitar o comando. E se você mudar de webcam? E se você instalar isso para outro usuário?
-
Ligeiramente mais limpo . Execute um script que leia um arquivo padrão que tenha o nome do dispositivo pulseaudio e seu nome de usuário. Se você quiser os arquivos que eles estão no GitHub. Primeiro o script /usr/local/bin/webcam-mic
. O arquivo de padrões /etc/default/webcam-mic
precisa apenas definir as 2 variáveis do shell, conforme o comentário na essência.
Coloque o script em /usr/local/bin/
e torne-o executável. Em seguida, insira o arquivo padrão em /etc/defaults/
e edite-o para usar seu nome de usuário e o dispositivo pulseaudio de antes.
Boa sorte!