Bagaimana cara memberitahu Firefox untuk menggunakan perangkat ALSA lain?

13

Saya memiliki kartu suara onboard, dan juga headset bluetooth yang terhubung. Saya telah mengkonfigurasi perangkat bluetooth di /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

Secara default, kartu onboard digunakan untuk semua suara (tampaknya, kartu onboard standar bahkan tidak perlu terdaftar dalam asound.conf)

Ketika saya ingin aplikasi menggunakan perangkat bluetooth alsa saya, saya harus menentukannya, seperti:

mplayer -ao alsa:device=bluetooth file.mp3

Itu baik untuk saya. Tapi saya perlu cara untuk memberitahu browser saya untuk menggunakan perangkat Bluetooth alsa juga.

Saya telah menemukan cara bagaimana memulai kromium menggunakan --alsa-output-deviceopsi commandline:

chromium --alsa-output-device=bluetooth

Saya memerlukan cara yang mirip untuk memulai firefox, tetapi saya tidak dapat menemukannya.

Bagaimana saya bisa memberi tahu firefox untuk menggunakan perangkat bluetooth alsa saya, tanpa harus memodifikasi /etc/asound.confatau ~/.asoundrcsetiap waktu?

MEMPERBARUI:

Saya telah mengikuti saran @ lgeorget dan /etc/asound.confsekarang saya terlihat seperti ini:

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
}

Ketika saya mulai menggunakan firefox ALSAPCM=bluetooth firefox, saya mendapatkan suara di headset bluetooth saya, tetapi firefox berjalan pada 100% CPU (pada 4 core saya) dan video youtube diputar pada kecepatan 10x (dan suaranya sesuai (kacau). Saya tidak memahami apa yang terjadi. Ketika saya memulai firefox tanpa ALSAPCM=bluetooth, semuanya OK, dan suara diputar pada perangkat alsa default.

Martin Vegter
sumber
Wow, pengguna dengan 21 lencana emas dan hanya 28 rep! Bagaimana kamu melakukannya?
Dmitry Grigoryev
4
@Dmitry Grigoryev - Saya menghabiskan segalanya untuk hadiah ...
Martin Vegter

Jawaban:

9

Tampaknya tidak ada opsi untuk firefox, tetapi Anda dapat memanipulasi output ALSA melalui variabel lingkungan.

Coba misalnya:

ALSA_PCM_CARD=bluetooth firefox

Atau, jika ini tidak berhasil, coba skrip sedikit .asoundrc Anda

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

(ganti "hw: HDMI" dengan pcm normal Anda). Kemudian jika Anda ingin program menggunakan PCM tertentu, gunakan:

ALSAPCM=bluetooth firefox

Sumber:

lororget
sumber
pendekatan pertama tidak berhasil. Ketika saya mencoba pendekatan kedua, saya mendapatkan suara di headset bluetooth saya, tetapi firefoxberjalan pada 100% CPU (pada 4 core saya) dan video youtube diputar pada kecepatan 10x. Saya tidak mengerti apa yang terjadi. Ketika saya memulai firefox tanpa ALSAPCM=bluetooth, semuanya OK, dan suara diputar pada perangkat alsa default.
Martin Vegter
Ada berbagai variabel lingkungan ALSA (lihat tautan ke wiki Archlinux), mungkin yang lain akan berfungsi. Saya sangat terkejut dengan masalah CPU, saya tidak tahu apa yang menyebabkannya.
lgeorget
1
beban CPU kemungkinan besar disebabkan oleh fakta, bahwa video dan audio diputar dan dialirkan pada kecepatan 10x. Misteri mengapa ALSAPCM=bluetoothperubahan kecepatan video menjadi 10x.
Martin Vegter
@ MartinVegter Yah, saya salin-tempel definisi pcm.! Default di posting saya dari wiki, mungkin tidak cocok untuk kasus spesifik Anda. Terutama bagian "type plug" dan "slave".
lgeorget
0

Sepertinya inkarnasi dari bug ini . Ada beberapa solusi yang disarankan, tetapi tampaknya spesifik untuk Intel.

Coba gunakan pulseaudio. Jika berhasil, Anda dapat mengalihkan program ALSA ke pulseaudio dengan yang berikut asound.conf:

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

Jika itu tidak membantu, coba tambahkan rate 44100atau rate 48000ke pcm.bluetoothbagian Anda asound.conf. Mungkin ALSA akan sadar saat itu.

Anda mungkin juga mencoba Pengontrol Kecepatan Video Youtube Html5 , meskipun saya ragu itu akan membantu.

Dmitry Grigoryev
sumber
terima kasih, tapi saya tidak tertarik dengan solusi menggunakan pulseaudio.
Martin Vegter
Maaf. Bisakah Anda mencoba parameter tingkat itu?
Dmitry Grigoryev
dengan parameter tingkat (baik dengan 44100 dan 48000), saya mendapatkan error berikut: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Sepertinya bluetooth tidak mendukung rateparameter.
Martin Vegter
0

Catatan: Versi Firefox saat ini tampaknya mengabaikan ~ / .asound.conf karena alasan yang tidak diketahui.

Jika Anda tidak menggunakan pulseaudio (ini terutama lapisan yang tidak dibutuhkan di atas alsa, meskipun sebagian besar distro menginstalnya), maka dalam kebanyakan kasus, Anda hanya perlu memilih output audio default ke yang berbeda.

Ini dapat dilakukan dengan yang berikut .asound.confdi rumah Anda:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Ganti Ndengan integer kecil, 0 untuk kartu suara pertama Anda (yang merupakan default), 1 untuk yang kedua, dan seterusnya.

The !dalam !defaulttidak negasi di sini! Ini adalah override dari alsa.conf global yang sebelumnya (ditentukan sistem).

Lebih banyak konfigurasi rumit dapat dibaca di sini .

peterh - Pasang kembali Monica
sumber