Come dire a Firefox di usare un altro dispositivo ALSA?


13

Ho una scheda audio integrata e anche un auricolare bluetooth collegato. Ho configurato il dispositivo bluetooth 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
}

Per impostazione predefinita, la scheda integrata viene utilizzata per tutto il suono (apparentemente, la scheda integrata predefinita non deve nemmeno essere elencata in asound.conf)

Quando voglio che un'applicazione utilizzi il mio dispositivo alsa bluetooth, devo specificarlo, come ad esempio:

mplayer -ao alsa:device=bluetooth file.mp3

Per me va bene. Ma ho bisogno di un modo per dire ai miei browser di usare anche il dispositivo bluetooth alsa.

Ho trovato il modo di avviare il cromo usando l' --alsa-output-deviceopzione della riga di comando:

chromium --alsa-output-device=bluetooth

Ho bisogno di un modo simile per avviare Firefox, ma non sono riuscito a trovarne.

Come posso dire a Firefox di utilizzare il mio dispositivo Bluetooth alsa, senza doverlo modificare /etc/asound.confo ~/.asoundrcogni volta?

AGGIORNARE:

Ho seguito i consigli di @ lgeorget e /etc/asound.confora il mio aspetto è simile al seguente:

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 inizio a utilizzare Firefox ALSAPCM=bluetooth firefox, ottengo l'audio nelle mie cuffie bluetooth, ma Firefox funziona al 100% della CPU (sui miei 4 core) e il video di YouTube viene riprodotto a una velocità di 10x (e il suono è di conseguenza (confuso). capire cosa sta succedendo. Quando avvio Firefox senza ALSAPCM=bluetooth, tutto è OK e il suono viene riprodotto sul dispositivo alsa predefinito.


Caspita, un utente con 21 badge d'oro e solo 28 rappresentanti! Come hai fatto?
Dmitry Grigoryev,

4
@Dmitry Grigoryev - Spendo tutto per taglie ...
Martin Vegter,

Risposte:


9

Apparentemente non esiste alcuna opzione per Firefox, ma è possibile manipolare l'output ALSA attraverso le variabili di ambiente.

Prova ad esempio:

ALSA_PCM_CARD=bluetooth firefox

In alternativa, se non funziona, prova a scrivere un po 'il tuo .asoundrc

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

(sostituisci "hw: hdmi" con il tuo normale pcm). Quindi, se si desidera che un programma utilizzi un PCM specifico, utilizzare:

ALSAPCM=bluetooth firefox

fonti:


il primo approccio non funziona. Quando provo il secondo approccio, ottengo l'audio nell'auricolare bluetooth, ma firefoxfunziona al 100% della CPU (sui miei 4 core) e il video di YouTube viene riprodotto a una velocità 10x. Non capisco cosa sta succedendo. Quando avvio Firefox senza ALSAPCM=bluetooth, tutto è OK e il suono viene riprodotto sul dispositivo alsa predefinito.
Martin Vegter,

Esistono diverse variabili di ambiente ALSA (vedi il link al wiki di Archlinux), forse un'altra funzionerebbe. Sono davvero sorpreso del problema con la CPU, non vedo cosa potrebbe causarlo.
Lgeorget,

1
molto probabilmente il carico della CPU è causato dal fatto che il video e l'audio vengono riprodotti e trasmessi in streaming a una velocità 10x. Il mistero è perché ALSAPCM=bluetoothcambia la velocità del video a 10x.
Martin Vegter,

@MartinVegter Bene, ho incollato la definizione di pcm.! Default nel mio post da un wiki, potrebbe non essere adatto al tuo caso specifico. Soprattutto la parte "tipo plug" e "slave".
Lgeorget,

0

Sembra un'incarnazione di questo bug . Ci sono alcune soluzioni suggerite, ma sembrano essere specifiche per Intel.

Prova a usare pulseaudio. Se funziona, puoi reindirizzare i tuoi programmi ALSA su pulseaudio con il seguente asound.conf:

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

Se il problema persiste, prova ad aggiungere rate 44100o rate 48000alla pcm.bluetoothsezione del tuo asound.conf. Forse allora ALSA tornerà in sé.

Potresti anche provare Html5 Youtube Video Speed ​​Controller , anche se dubito che possa aiutare.


grazie, ma non mi interessano le soluzioni che utilizzano pulseaudio.
Martin Vegter,

Scusa. Potresti provare quel parametro rate allora?
Dmitry Grigoryev,

con il parametro frequenza (entrambi con 44100 e 48000), ottengo errore seguente: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Sembra che il bluetooth non supporti il rateparametro.
Martin Vegter,

0

Nota: le attuali versioni di Firefox sembrano ignorare ~ / .asound.conf per motivi sconosciuti.

Se non usi pulseaudio (è principalmente uno strato non necessario su alsa, nonostante la maggior parte delle distribuzioni lo installi), nella maggior parte dei casi, devi solo selezionare l'uscita audio predefinita su un altro.

Questo può essere fatto con quanto segue .asound.confa casa tua:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Sostituisci Ncon un numero intero piccolo, 0 per la tua prima scheda audio (che è l'impostazione predefinita), 1 per la seconda e così via.

L' !in !defaultnon è la negazione qui! È un override dell'alsa.conf globale (definito a livello di sistema) in precedenza.

Altre configurazioni complicate possono essere lette qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.