Jak powiedzieć Firefoxowi, aby używał innego urządzenia ALSA?


13

Mam wbudowaną kartę dźwiękową, a także podłączony zestaw słuchawkowy Bluetooth. Skonfigurowałem urządzenie Bluetooth w /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

Domyślnie karta pokładowa jest używana do wszystkich dźwięków (najwyraźniej domyślna karta pokładowa nawet nie musi być wymieniona w asound.conf)

Kiedy chcę, aby aplikacja korzystała z mojego urządzenia alsa Bluetooth, muszę to określić, na przykład:

mplayer -ao alsa:device=bluetooth file.mp3

To dla mnie w porządku. Ale potrzebuję sposobu, aby powiedzieć moim przeglądarkom, aby używały również urządzenia Bluetooth Alsa.

Znalazłem sposób na uruchomienie chromu za pomocą --alsa-output-deviceopcji wiersza poleceń:

chromium --alsa-output-device=bluetooth

Potrzebuję podobnego sposobu na uruchomienie Firefoksa, ale nie mogłem go znaleźć.

Jak mogę powiedzieć Firefoxowi, aby korzystał z mojego urządzenia Alsa Bluetooth bez konieczności modyfikacji /etc/asound.conflub za ~/.asoundrckażdym razem?

AKTUALIZACJA:

Postępowałem zgodnie z radą @ lgeorget i /etc/asound.confteraz wygląda to tak:

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
}

Kiedy zaczynam korzystać z firefoxa ALSAPCM=bluetooth firefox, słyszę dźwięk w zestawie słuchawkowym Bluetooth, ale firefox działa przy 100% mocy procesora (na moich 4 rdzeniach), a wideo youtube jest odtwarzane z prędkością 10x (a dźwięk jest odpowiednio (zniekształcony). zrozumieć, co się dzieje. Kiedy uruchamiam Firefoksa bez ALSAPCM=bluetooth, wszystko jest w porządku, a dźwięk jest odtwarzany na domyślnym urządzeniu ALSA.


Wow, użytkownik z 21 złotymi odznakami i tylko 28 powtórzeniami! Jak to zrobiłeś?
Dmitry Grigoryev

4
@Dmitry Grigoryev - Wydaję wszystko na nagrody ...
Martin Vegter

Odpowiedzi:


9

Najwyraźniej nie ma opcji dla Firefoxa, ale możesz manipulować danymi wyjściowymi ALSA za pomocą zmiennych środowiskowych.

Spróbuj na przykład:

ALSA_PCM_CARD=bluetooth firefox

Alternatywnie, jeśli to nie zadziała, spróbuj trochę skryptu .asoundrc

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

(zamień „hw: hdmi” na zwykły pcm). Następnie, jeśli chcesz, aby program używał określonego PCM, użyj:

ALSAPCM=bluetooth firefox

Źródła:


pierwsze podejście nie działa. Kiedy próbuję zastosować drugie podejście, słyszę dźwięk w zestawie słuchawkowym Bluetooth, ale firefoxdziała on na 100% procesorze (na moich 4 rdzeniach), a wideo na YouTube jest odtwarzane z prędkością 10x. Nie rozumiem co się dzieje. Kiedy uruchamiam Firefoksa bez ALSAPCM=bluetooth, wszystko jest w porządku, a dźwięk jest odtwarzany na domyślnym urządzeniu ALSA.
Martin Vegter

Istnieją różne zmienne środowiskowe ALSA (patrz link do wiki Archlinux), może inna zadziała. Jestem naprawdę zaskoczony problemem z procesorem, nie rozumiem, co może to powodować.
lgeorget

1
obciążenie procesora jest najprawdopodobniej spowodowane faktem, że wideo i audio są odtwarzane i przesyłane strumieniowo z prędkością 10x. Tajemnicą jest, dlaczego ALSAPCM=bluetoothzmienia prędkość wideo na 10x.
Martin Vegter,

@MartinVegter Cóż, skopiowałem i wkleiłem definicję pcm.! Default w moim poście z wiki, może ona nie pasować do twojego konkretnego przypadku. Zwłaszcza część „typu plug” i „slave”.
lgeorget

0

Wygląda jak wcielenie tego błędu . Sugerowane są niektóre rozwiązania , ale wydają się one być specyficzne dla Intela.

Spróbuj użyć pulseaudio. Jeśli to działa, możesz przekierować swoje programy ALSA do pulseaudio w następujący sposób asound.conf:

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

Jeśli to nie pomoże, spróbuj dodać rate 44100lub rate 48000do swojej pcm.bluetoothsekcji asound.conf. Może wtedy ALSA nabierze rozsądku.

Możesz także wypróbować Html5 Youtube Video Speed ​​Controller , choć wątpię, że to pomoże.


dzięki, ale nie interesują mnie rozwiązania wykorzystujące pulseaudio.
Martin Vegter,

Przepraszam. Czy mógłbyś zatem wypróbować ten parametr stawki?
Dmitry Grigoryev

z parametrem stopy (zarówno z 44100 i 48000), pojawia się następujący błąd: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Wygląda na to, że bluetooth nie obsługuje tego rateparametru.
Martin Vegter,

0

Uwaga: obecne wersje Firefoksa wydają się ignorować ~ / .asound.conf z nieznanych powodów.

Jeśli nie korzystasz z pulseaudio (jest to głównie niepotrzebna warstwa nad alsa, pomimo tego, że większość dystrybucji go instaluje), to w większości przypadków wystarczy wybrać domyślne wyjście audio na inne.

Można to zrobić .asound.confw domu:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Zastąp Nmałą liczbą całkowitą, 0 dla pierwszej karty dźwiękowej (która jest domyślna), 1 dla drugiej i tak dalej.

!W !defaultnie jest negacja tutaj! Jest to przesłanianie wcześniejszego (zdefiniowanego w systemie) globalnego pliku alsa.conf.

Bardziej skomplikowane konfiguracje można przeczytać tutaj .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.