Wie kann ich Firefox anweisen, ein anderes ALSA-Gerät zu verwenden?

13

Ich habe eine integrierte Soundkarte und ein angeschlossenes Bluetooth-Headset. Ich habe das Bluetooth-Gerät konfiguriert in /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

Standardmäßig wird die Onboard-Karte für den gesamten Sound verwendet (anscheinend muss die Standard-Onboard-Karte nicht einmal in der Datei asound.conf aufgeführt sein).

Wenn ich möchte, dass eine Anwendung mein Bluetooth alsa-Gerät verwendet, muss ich Folgendes angeben:

mplayer -ao alsa:device=bluetooth file.mp3

Das ist gut für mich. Aber ich muss meinen Browsern mitteilen, dass sie auch Bluetooth alsa verwenden sollen.

Ich habe einen Weg gefunden, wie man Chrom mit der --alsa-output-deviceKommandozeilenoption startet :

chromium --alsa-output-device=bluetooth

Ich brauche eine ähnliche Methode, um Firefox zu starten, konnte aber keine finden.

Wie kann ich Firefox anweisen, mein Bluetooth alsa-Gerät zu verwenden, ohne dass Änderungen vorgenommen werden müssen, /etc/asound.confoder ~/.asoundrcjedes Mal?

AKTUALISIEREN:

Ich habe den Rat von @ lgeorget befolgt und meine /etc/asound.confsieht jetzt so aus:

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
}

Wenn ich mit der Verwendung von Firefox beginne ALSAPCM=bluetooth firefox, wird in meinem Bluetooth-Headset ein Ton ausgegeben, aber Firefox wird mit 100% CPU (auf meinen 4 Kernen) ausgeführt und das YouTube-Video wird mit 10-facher Geschwindigkeit wiedergegeben (und der Ton ist dementsprechend verstümmelt) Verstehe, was passiert Wenn ich Firefox ohne ALSAPCM=bluetoothstarte, ist alles in Ordnung und der Ton wird auf dem Standard-Alsa-Gerät abgespielt.

Martin Vegter
quelle
Wow, ein Benutzer mit 21 Goldabzeichen und nur 28 Wiederholungen! Wie hast du es gemacht?
Dmitry Grigoryev
4
@Dmitry Grigoryev - Ich gebe alles für Kopfgelder aus ...
Martin Vegter

Antworten:

9

Anscheinend gibt es keine Option für Firefox, aber Sie können die ALSA-Ausgabe über Umgebungsvariablen bearbeiten.

Versuchen Sie zum Beispiel:

ALSA_PCM_CARD=bluetooth firefox

Wenn dies nicht funktioniert, können Sie auch versuchen, ein wenig Ihre .asoundrc-Datei zu skripten

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

(Ersetzen Sie "hw: hdmi" durch Ihre normale PCM). Wenn Sie möchten, dass ein Programm ein bestimmtes PCM verwendet, verwenden Sie:

ALSAPCM=bluetooth firefox

Quellen:

lgeorget
quelle
Der erste Ansatz funktioniert nicht. Wenn ich den zweiten Ansatz versuche, wird in meinem Bluetooth-Headset ein Ton ausgegeben, der jedoch firefoxmit 100% CPU (auf meinen 4 Kernen) ausgeführt wird, und das YouTube-Video wird mit 10-facher Geschwindigkeit wiedergegeben. Ich verstehe nicht, was passiert. Wenn ich Firefox ohne ALSAPCM=bluetoothstarte, ist alles in Ordnung und der Ton wird auf dem Standard-Alsa-Gerät abgespielt.
Martin Vegter
Es gibt verschiedene ALSA-Umgebungsvariablen (siehe den Link zum Archlinux-Wiki), möglicherweise würde eine andere funktionieren. Ich bin wirklich überrascht über das CPU-Problem, ich sehe nicht, was das verursachen könnte.
Lgeorget
1
Die CPU-Auslastung wird höchstwahrscheinlich dadurch verursacht, dass Video und Audio mit 10-facher Geschwindigkeit wiedergegeben und gestreamt werden. Das Geheimnis ist, warum ALSAPCM=bluetoothdie Videogeschwindigkeit auf 10x geändert wird.
Martin Vegter
@MartinVegter Nun, ich habe die Definition von pcm.! Default in meinem Beitrag aus einem Wiki kopiert. Sie ist möglicherweise nicht für Ihren speziellen Fall geeignet. Besonders der "Typ Plug" und "Slave" Teil.
Lgeorget
0

Es sieht aus wie eine Inkarnation dieses Fehlers . Es werden einige Lösungen vorgeschlagen, die jedoch Intel-spezifisch zu sein scheinen.

Versuchen Sie es mit pulseaudio. Wenn es funktioniert, können Sie Ihre ALSA-Programme wie folgt an pulseaudio umleiten asound.conf:

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

Wenn das nicht hilft, versuchen Sie es mit dem Hinzufügen von rate 44100oder rate 48000zum pcm.bluetoothAbschnitt Ihres asound.conf. Vielleicht kommt ALSA dann zur Besinnung.

Sie könnten auch versuchen, Html5 Youtube Video Speed ​​Controller , obwohl ich bezweifle, dass es helfen wird.

Dmitry Grigoryev
quelle
danke, aber ich interessiere mich nicht für lösungen mit pulseaudio.
Martin Vegter
Es tut uns leid. Könnten Sie diesen Ratenparameter dann versuchen?
Dmitry Grigoryev
mit dem Geschwindigkeitsparameter (beide mit 44100 und 48000), habe ich folgende Fehlermeldung erhalten: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Es sieht so aus, als ob Bluetooth den rateParameter nicht unterstützt .
Martin Vegter
0

Anmerkung: Aktuelle Firefox-Versionen scheinen ~ / .asound.conf aus unbekannten Gründen zu ignorieren.

Wenn Sie pulseaudio nicht verwenden (es ist hauptsächlich eine nicht benötigte Ebene über alsa, obwohl die meisten Distributionen es installieren), müssen Sie in den meisten Fällen nur die Standard-Audioausgabe auf eine andere einstellen.

Dies kann .asound.confbei Ihnen zu Hause folgendermaßen geschehen :

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Ersetzen Sie NIhre erste Soundkarte durch eine kleine Ganzzahl, 0 (dies ist die Standardeinstellung), 1 für Ihre zweite und so weiter.

Die !in !defaultist hier nicht Negation! Es ist eine Überschreibung der zuvor (systemweit definierten) globalen alsa.conf.

Weitere knifflige Konfigurationen können hier gelesen werden .

Peterh: Setzen Sie Monica wieder ein
quelle