Comment dire à Firefox d'utiliser un autre appareil ALSA?

13

J'ai une carte son intégrée et également un casque Bluetooth connecté. J'ai configuré le périphérique Bluetooth dans /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

Par défaut, la carte intégrée est utilisée pour tous les sons (apparemment, la carte intégrée par défaut n'a même pas besoin d'être répertoriée dans asound.conf)

Lorsque je veux qu'une application utilise mon appareil bluetooth alsa, je dois le spécifier, comme:

mplayer -ao alsa:device=bluetooth file.mp3

Ça me va. Mais j'ai besoin d'un moyen de dire à mes navigateurs d'utiliser également l'appareil Bluetooth alsa.

J'ai trouvé un moyen de démarrer le chrome en utilisant l' --alsa-output-deviceoption de ligne de commande:

chromium --alsa-output-device=bluetooth

J'ai besoin d'un moyen similaire pour démarrer Firefox, mais je n'en ai pas trouvé.

Comment puis-je dire à Firefox d'utiliser mon appareil Bluetooth ALSA, sans avoir à le modifier /etc/asound.confou à ~/.asoundrcchaque fois?

MISE À JOUR:

J'ai suivi les conseils de @ lgeorget et mon /etc/asound.confressemble maintenant à ceci:

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
}

Lorsque je commence à utiliser Firefox ALSAPCM=bluetooth firefox, je reçois du son dans mon casque Bluetooth, mais Firefox fonctionne à 100% du processeur (sur mes 4 cœurs) et la vidéo YouTube est lue à une vitesse 10x (et le son est en conséquence (brouillé). Je ne le fais pas comprendre ce qui se ALSAPCM=bluetoothpasse.Lorsque je démarre sans Firefox , tout est OK et le son est lu sur l'appareil alsa par défaut.

Martin Vegter
la source
Wow, un utilisateur avec 21 badges or et seulement 28 rep! Comment avez-vous fait?
Dmitry Grigoryev
4
@Dmitry Grigoryev - Je dépense tout en primes ...
Martin Vegter

Réponses:

9

Apparemment, il n'y a pas d'option pour Firefox, mais vous pouvez manipuler la sortie ALSA via des variables d'environnement.

Essayez par exemple:

ALSA_PCM_CARD=bluetooth firefox

Sinon, si cela ne fonctionne pas, essayez d'écrire un peu votre .asoundrc

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

(remplacez "hw: hdmi" par votre pcm normal). Ensuite, si vous souhaitez qu'un programme utilise un PCM spécifique, utilisez:

ALSAPCM=bluetooth firefox

Sources:

lgeorget
la source
la première approche ne fonctionne pas. Lorsque j'essaie la deuxième approche, j'obtiens du son dans mon casque Bluetooth, mais firefoxfonctionne à 100% CPU (sur mes 4 cœurs) et la vidéo youtube est lue à une vitesse 10x. Je ne comprends pas ce qui se passe. Lorsque je démarre Firefox sans ALSAPCM=bluetooth, tout va bien et le son est lu sur l'appareil alsa par défaut.
Martin Vegter
Il existe différentes variables d'environnement ALSA (voir le lien vers le wiki Archlinux), peut-être qu'une autre fonctionnerait. Je suis vraiment surpris du problème de CPU, je ne vois pas ce qui pourrait en être la cause.
lgeorget
1
la charge du processeur est probablement due au fait que la vidéo et l'audio sont lus et diffusés à une vitesse 10x. Le mystère est la raison pour laquelle la ALSAPCM=bluetoothvitesse de la vidéo passe à 10x.
Martin Vegter
@MartinVegter Eh bien, j'ai copié-collé la définition du pcm.! Par défaut dans mon article à partir d'un wiki, cela pourrait ne pas convenir à votre cas spécifique. Surtout la partie "type plug" et "slave".
lgeorget
0

Cela ressemble à une incarnation de ce bug . Certaines solutions sont suggérées, mais elles semblent être spécifiques à Intel.

Essayez d'utiliser pulseaudio. Si cela fonctionne, vous pouvez rediriger vos programmes ALSA vers pulseaudio avec les éléments suivants asound.conf:

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

Si cela ne vous aide pas, essayez d'ajouter rate 44100ou rate 48000à la pcm.bluetoothsection de votre asound.conf. Peut-être qu'ALSA reprendra ses sens.

Vous pouvez également essayer le contrôleur de vitesse vidéo Html5 Youtube , bien que je doute que cela vous aide.

Dmitry Grigoryev
la source
merci, mais je ne suis pas intéressé par les solutions utilisant pulseaudio.
Martin Vegter
Pardon. Pourriez-vous essayer ce paramètre de taux alors?
Dmitry Grigoryev
avec le paramètre de débit ( à la fois avec 44100 et 48000), je reçois l' erreur suivante: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. On dirait que le bluetooth ne prend pas en charge le rateparamètre.
Martin Vegter
0

Remarque: les versions actuelles de Firefox semblent ignorer ~ / .asound.conf pour des raisons inconnues.

Si vous n'utilisez pas pulseaudio (il s'agit principalement d'un calque inutile sur alsa, malgré le fait que la plupart des distributions l'installent), dans la plupart des cas, il vous suffit de sélectionner la sortie audio par défaut sur une autre.

Cela peut être fait avec les éléments suivants .asound.confdans votre maison:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Remplacez Npar un petit entier, 0 pour votre première carte son (qui est la valeur par défaut), 1 pour votre deuxième, et ainsi de suite.

L' !entrée !defaultn'est pas la négation ici! Il s'agit d'un remplacement de l'alsa.conf global (défini à l'échelle du système).

Des configurations plus délicates peuvent être lues ici .

peterh - Réintégrer Monica
la source