Como dizer ao Firefox para usar outro dispositivo ALSA?

13

Eu tenho uma placa de som integrada e também um fone de ouvido bluetooth conectado. Eu configurei o dispositivo bluetooth em /etc/asound.conf:

# cat /etc/asound.conf

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}

Por padrão, a placa interna é usada para todos os sons (aparentemente, a placa interna padrão nem precisa ser listada no asound.conf)

Quando quero que um aplicativo use meu dispositivo bluetooth alsa, preciso especificá-lo, como:

mplayer -ao alsa:device=bluetooth file.mp3

Isso é bom para mim. Mas preciso de uma maneira de informar meus navegadores para usar o dispositivo Bluetooth também.

Eu encontrei uma maneira de iniciar o cromo usando a --alsa-output-deviceopção de linha de comando:

chromium --alsa-output-device=bluetooth

Eu preciso de uma maneira semelhante de iniciar o Firefox, mas não consegui encontrar nenhuma.

Como posso dizer ao firefox para usar meu dispositivo bluetooth alsa, sem precisar modificar /etc/asound.confou ~/.asoundrcsempre?

ATUALIZAR:

Eu segui o conselho de @ lgeorget e meu /etc/asound.confagora é assim:

pcm.!default {
type plug
slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:0,0"
    }
}

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}

Quando inicio o uso do firefox ALSAPCM=bluetooth firefox, ouço som no meu fone de ouvido bluetooth, mas o firefox é executado a 100% da CPU (nos meus 4 núcleos) e o vídeo do youtube é reproduzido em velocidade 10x (e o som é correspondente (ilegível). Entendo o que está acontecendo.Quando inicio o Firefox sem ALSAPCM=bluetooth, tudo está OK eo som é reproduzido no dispositivo alsa padrão.

Martin Vegter
fonte
Uau, um usuário com 21 emblemas de ouro e apenas 28 representantes! Como você fez isso?
Dmitry Grigoryev
4
@Dmitry Grigoryev - Eu gasto tudo no bounties ...
Martin Vegter

Respostas:

9

Aparentemente, não há opção para o firefox, mas você pode manipular a saída do ALSA através de variáveis ​​de ambiente.

Tente por exemplo:

ALSA_PCM_CARD=bluetooth firefox

Como alternativa, se isso não funcionar, tente fazer um script um pouco do seu .asoundrc

pcm.!default {
type plug
slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:hdmi"
    }
}

(substitua "hw: hdmi" pelo seu pcm normal). Então, se você deseja que um programa use um PCM específico, use:

ALSAPCM=bluetooth firefox

Fontes:

lgeorget
fonte
a primeira abordagem não funciona. Quando tento a segunda abordagem, recebo som no meu fone de ouvido bluetooth, mas firefoxroda a 100% da CPU (nos meus 4 núcleos) e o vídeo do youtube é reproduzido em velocidade 10x. Eu não entendo o que está acontecendo. Quando inicio o firefox sem ALSAPCM=bluetooth, tudo está OK e o som é reproduzido no dispositivo alsa padrão.
Martin Vegter 15/09/16
Existem diferentes variáveis ​​de ambiente ALSA (veja o link para o wiki do Archlinux), talvez outra funcione. Estou realmente surpreso com o problema da CPU, não vejo o que poderia causar isso.
precisa saber é o seguinte
1
a carga da CPU provavelmente é causada pelo fato de que o vídeo e o áudio estão sendo reproduzidos e transmitidos em velocidade 10x. O mistério é por que ALSAPCM=bluetoothaltera a velocidade do vídeo para 10x.
Martin Vegter 15/09/16
@MartinVegter Bem, copiei e colei a definição do padrão pcm.! No meu post de um wiki, ele pode não ser adequado para o seu caso específico. Especialmente a parte "tipo plug" e "slave".
precisa saber é o seguinte
0

Parece uma encarnação desse bug . Existem algumas soluções sugeridas, mas elas parecem ser específicas da Intel.

Tente usar o pulseaudio. Se funcionar, você pode redirecionar seus programas ALSA para pulseaudio com o seguinte asound.conf:

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

Se isso não ajudar, tente adicionar rate 44100ou rate 48000à pcm.bluetoothseção do seu asound.conf. Talvez a ALSA volte ao normal então.

Você também pode tentar o Controlador de velocidade de vídeo Html5 do Youtube , embora eu duvide que isso ajude.

Dmitry Grigoryev
fonte
obrigado, mas não estou interessado em soluções usando o pulseaudio.
Martin Vegter 20/09/16
Desculpe. Você poderia tentar esse parâmetro de taxa então?
Dmitry Grigoryev
com o parâmetro de taxa (ambos com 44100 e 48000), recebo seguinte erro: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Parece que o bluetooth não suporta o rateparâmetro.
Martin Vegter 21/09/16
0

Observação: as versões atuais do Firefox parecem ignorar ~ / .asound.conf por razões desconhecidas.

Se você não usa o pulseaudio (é principalmente uma camada desnecessária sobre o alsa, apesar de a maioria das distros instalá-lo), na maioria dos casos, você só precisa selecionar a saída de áudio padrão para outra.

Isso pode ser feito com o seguinte .asound.confem sua casa:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Substitua Npor um número inteiro pequeno, 0 para sua primeira placa de som (que é o padrão), 1 para sua segunda e assim por diante.

O !in !defaultnão é negação aqui! É uma substituição do alsa.conf global anteriormente (definido por todo o sistema).

Configurações mais complicadas podem ser lidas aqui .

peterh - Restabelecer Monica
fonte