¿Cómo decirle a Firefox que use otro dispositivo ALSA?

13

Tengo una tarjeta de sonido integrada y también unos auriculares bluetooth conectados. He configurado el dispositivo bluetooth en /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

De forma predeterminada, la tarjeta integrada se utiliza para todo el sonido (aparentemente, la tarjeta integrada predeterminada ni siquiera necesita figurar en asound.conf)

Cuando quiero que una aplicación use mi dispositivo bluetooth alsa, tengo que especificarlo, como por ejemplo:

mplayer -ao alsa:device=bluetooth file.mp3

Está bien por mí. Pero necesito una forma de decirles a mis navegadores que también usen el dispositivo bluetooth alsa.

He encontrado una manera de iniciar el cromo usando la --alsa-output-deviceopción de línea de comandos:

chromium --alsa-output-device=bluetooth

Necesito una forma similar de iniciar Firefox, pero no pude encontrar ninguna.

¿Cómo puedo decirle a Firefox que use mi dispositivo Bluetooth Alsa, sin tener que modificarlo /etc/asound.confo ~/.asoundrccada vez?

ACTUALIZAR:

He seguido el consejo de @ lgeorget y /etc/asound.confahora mi aspecto es el siguiente:

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
}

Cuando comienzo a usar Firefox ALSAPCM=bluetooth firefox, obtengo sonido en mis auriculares bluetooth, pero Firefox funciona al 100% de la CPU (en mis 4 núcleos) y el video de YouTube se reproduce a una velocidad de 10x (y el sonido es correspondientemente). entiendo lo que está sucediendo. Cuando inicio Firefox sin ALSAPCM=bluetooth, todo está bien y el sonido se reproduce en el dispositivo predeterminado.

Martin Vegter
fuente
¡Guau, un usuario con 21 insignias de oro y solo 28 repeticiones! ¿Cómo lo hiciste?
Dmitry Grigoryev
44
@Dmitry Grigoryev - Gasto todo en recompensas ...
Martin Vegter

Respuestas:

9

Aparentemente no hay opción para firefox, pero puede manipular la salida de ALSA a través de variables de entorno.

Prueba por ejemplo:

ALSA_PCM_CARD=bluetooth firefox

Alternativamente, si esto no funciona, intente escribir un poco su .asoundrc

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

(reemplace "hw: hdmi" con su pcm normal). Luego, si desea que un programa use un PCM específico, use:

ALSAPCM=bluetooth firefox

Fuentes:

lgeorget
fuente
El primer enfoque no funciona. Cuando intento el segundo enfoque, obtengo sonido en mis auriculares bluetooth, pero firefoxfunciona al 100% de la CPU (en mis 4 núcleos) y el video de YouTube se reproduce a una velocidad de 10x. No entiendo lo que está pasando. Cuando inicio Firefox sin ALSAPCM=bluetooth, todo está bien y el sonido se reproduce en el dispositivo predeterminado.
Martin Vegter
Hay diferentes variables de entorno ALSA (consulte el enlace a la wiki de Archlinux), tal vez otra funcionaría. Estoy realmente sorprendido por el problema de la CPU, no veo qué podría causar eso.
lgeorget
1
Lo más probable es que la carga de la CPU se deba al hecho de que el video y el audio se están reproduciendo y transmitiendo a una velocidad de 10x. El misterio es por qué ALSAPCM=bluetoothcambia la velocidad del video a 10x.
Martin Vegter
@MartinVegter Bueno, copié y pegué la definición del pcm.! Default en mi publicación de un wiki, puede que no sea adecuado para su caso específico. Especialmente la parte "tipo enchufe" y "esclavo".
lgeorget
0

Parece una encarnación de este error . Se sugieren algunas soluciones , pero parecen ser específicas de Intel.

Intenta usar pulseaudio. Si funciona, puede redirigir sus programas ALSA a pulseaudio con lo siguiente asound.conf:

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

Si eso no ayuda, intente agregar rate 44100o rate 48000a la pcm.bluetoothsección de su asound.conf. Quizás ALSA vuelva a sus sentidos entonces.

También puede probar el controlador de velocidad de video Html5 Youtube , aunque dudo que ayude.

Dmitry Grigoryev
fuente
gracias, pero no estoy interesado en soluciones con pulseaudio.
Martin Vegter
Lo siento. ¿Podrías probar ese parámetro de velocidad entonces?
Dmitry Grigoryev
con el parámetro de velocidad (ambos con 44100 y 48000), consigo error siguiente: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Parece que bluetooth no es compatible con el rateparámetro.
Martin Vegter
0

Observación: Las versiones actuales de Firefox parecen ignorar ~ / .asound.conf por razones desconocidas.

Si no usa pulseaudio (es principalmente una capa innecesaria sobre alsa, a pesar de que la mayoría de las distribuciones lo instalan), en la mayoría de los casos, solo necesita seleccionar la salida de audio predeterminada a una diferente.

Esto se puede hacer con lo siguiente .asound.confen su hogar:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Sustituya Ncon un número entero pequeño, 0 para su primera tarjeta de sonido (que es la predeterminada), 1 para la segunda, y así sucesivamente.

El !en !defaultno es la negación aquí! Es una anulación del anterior alsa.conf global (definido en todo el sistema).

Configuraciones más difíciles se pueden leer aquí .

peterh - Restablece a Monica
fuente