Eu não queria tentar resolvê-lo corrigindo o problema com pulseaudio, já que esse problema acabou de chegar à superfície do nada, não sei qual pacote eu instalei, mas não mudei nada os arquivos de configuração, e esse problema apareceu de repente.
O que eu fiz para resolver isso foi remover completamente o pulseaudio.
apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse
Alterado de volta para o meu arquivo antigo alsa asound.conf e adicionado a entrada para a variável de ambiente do dispositivo.
/ETC/ASOUND.CONF
defaults.pcm.!card Device
defaults.ctl.!card Device
defaults.pcm.!device {
@func igetenv
vars [ ALSA_PCM_DEVICE ]
default 0
}
FUNCIONA! ("Device" é o nome do meu cartão USB)
Eu tenho que definir as variáveis do ambiente ao mudar para um cartão com vários dispositivos de saída de áudio.
Comando: > ALSA_PCM_CARD = CARTÃO ALSA_PCM_DEVICE = DEVICE firefox
Eu não consegui configurar o ALSA_PCM_DEVICE sem adicioná-lo ao asound.conf, aparentemente não foi suficiente configurá-lo apesar de estar definido em /usr/share/alsa/alsa.conf
.
A razão para isso é que o plughw usa o ALSA_PCM_DEVICE e, se não estiver configurado, retorna ao defaults.pcm.device, enquanto o dmix (/usr/share/alsa/pcm/dmix.conf)
usa apenas o defaults.pcm.device, sem verificar o ALSA_PCM_DEVICE
É por isso que você precisa redefinir explicitamente o dispositivo defaults.pcm.! para verificar a variável de ambiente ALSA_PCM_DEVICE
EDIT (SUMMARY CONVERSATION ON IRC - ALSA Enviroment variables)
A menos que você tenha algum dispositivo / driver incorporado incomum.
A Alsa deve fornecer uma cadeia de reprodução "padrão" = plug-> dmix- > hw semelhante.
Deve funcionar sem caixa ~ / .asoundrc.
É apenas por padrão que a cadeia termina no dispositivo 0 do cartão 0.
Ou, tecnicamente, ele: (1) assume como padrão o ambiente ALSA_PCM_CARD, se não for set (2), o padrão é ALSA_CARD env.variable, se não for set (3), o padrão é "defaults.pcm.card" alsa variable e se isso não for definido (4), o padrão é 0.
Assim, por exemplo, para ter todos os aplicativos sendo reproduzidos em uma placa de som chamada "PCH", você precisa de apenas duas linhas ~ / .asoundrc (apenas seu usuário) ou /etc/asound.conf (todos os usuários):
defaults.pcm.! card PCH
defaults.ctl.! card PCH
Para substituir isso e reproduzir para um cartão chamado "Fone de ouvido", você pode executar aplicativos como: env ALSA_CARD=Headset some-app-here
. Você pode ver os nomes dos cartões em cat /proc/asound/cards
ou aplay -l
output. Tecnicamente, você pode usar números de cartão também ( env ALSA_CARD=2 some-app-here
), mas os números podem mudar na reinicialização, então é melhor usar nomes.
EDIT (SUMMARY CONVERSATION ON IRC - PulseAudio)
O Pulseaudio faz isso de forma diferente. Em vez de adicionar módulos intermediários, ele adiciona um daemon pulseaudio global e esse daemon reproduz diretamente para "hw" pcm. Todos os outros aplicativos devem ser reproduzidos para esse daemon, porque enquanto ele está em execução, ninguém mais pode reproduzir para "hw". É por isso que eu tinha "dispositivo ou recurso está ocupado".
Assim, uma cadeia de reprodução pulseaudio típica é o módulo default="type pulse" - > daemon pulseaudio - > hw Você não deve usar "hw" ou "plughw" ou "dmix" com pulseaudio - eles não podem trabalhar juntos. Em vez disso eu deveria ter definido pcm.! Default {type pulse} (na verdade o pulseaudio geralmente faz isso automaticamente)
Com o pulseaudio instalado, você precisa apenas de pcm.! default {tipo pulse}. E na maioria das distribuições o pulseaudio faz isso automaticamente. (no archlinux é empacotado como um pacote separado "pulseaudio-alsa", que basicamente tem apenas essa configuração alsa e nada mais)