Как сказать Firefox использовать другое устройство ALSA?

13

У меня есть встроенная звуковая карта, а также подключенная Bluetooth-гарнитура. Я настроил устройство Bluetooth в /etc/asound.conf:

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

По умолчанию встроенная карта используется для всех звуков (по-видимому, встроенную карту по умолчанию даже не нужно указывать в asound.conf)

Когда я хочу, чтобы приложение использовало мое устройство Bluetooth Alsa, я должен указать его, например:

mplayer -ao alsa:device=bluetooth file.mp3

Это нормально для меня. Но мне нужен способ сказать моим браузерам использовать устройство Bluetooth Alsa.

Я нашел способ, как запустить хром, используя параметр --alsa-output-deviceкомандной строки:

chromium --alsa-output-device=bluetooth

Мне нужен аналогичный способ запуска Firefox, но я не смог найти ни одного.

Как я могу сказать Firefox использовать мое устройство Bluetooth Alsa без необходимости изменения /etc/asound.confили ~/.asoundrcкаждый раз?

ОБНОВИТЬ:

Я следовал совету @ lgeorget и /etc/asound.confтеперь мой выглядит так:

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
}

Когда я запускаю Firefox с использованием ALSAPCM=bluetooth firefox, я получаю звук в моей гарнитуре Bluetooth, но Firefox работает на 100% ЦП (на моих 4 ядрах), и видео на YouTube воспроизводится с 10-кратной скоростью (и звук соответственно (искажен). понять, что происходит. Когда я запускаю Firefox без ALSAPCM=bluetooth, все в порядке, и звук воспроизводится на устройстве Alsa по умолчанию.

Мартин Вегтер
источник
Вау, пользователь с 21 золотыми значками и только с 28 повторениями! Как ты сделал это?
Дмитрий Григорьев
4
@ Дмитрий Григорьев - Я трачу все на награды ...
Мартин Вегтер

Ответы:

9

Очевидно, что для Firefox нет опций, но вы можете манипулировать выводом ALSA через переменные окружения.

Попробуйте например:

ALSA_PCM_CARD=bluetooth firefox

В качестве альтернативы, если это не сработает, попробуйте немного написать скрипт .asoundrc

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

(замените "hw: hdmi" на ваш обычный PCM). Затем, если вы хотите, чтобы программа использовала определенный PCM, используйте:

ALSAPCM=bluetooth firefox

Источники:

lgeorget
источник
первый подход не работает. Когда я пробую второй подход, я получаю звук в своей гарнитуре Bluetooth, но firefoxработает на 100% CPU (на моих 4 ядрах), и видео с YouTube воспроизводится с 10-кратной скоростью. Я не понимаю, что происходит. Когда я запускаю Firefox без ALSAPCM=bluetooth, все в порядке, и звук воспроизводится на устройстве Alsa по умолчанию.
Мартин Вегтер
Существуют разные переменные среды ALSA (см. Ссылку на Archlinux wiki), возможно, подойдет другая. Я действительно удивлен проблемой процессора, я не понимаю, что может вызвать это.
lgeorget
1
нагрузка на процессор, скорее всего, вызвана тем, что видео и аудио воспроизводятся и передаются с 10-кратной скоростью. Загадка в том, почему ALSAPCM=bluetoothскорость видео меняется на 10х.
Мартин Вегтер
@MartinVegter Ну, я скопировал и вставил определение по умолчанию pcm.! В своем посте из вики, оно может не подходить для вашего конкретного случая. Особенно «штепсельная вилка» и «ведомая» часть.
lgeorget
0

Это похоже на воплощение этой ошибки . Предлагаются некоторые решения , но, похоже, они специфичны для Intel.

Попробуйте использовать pulseaudio. Если это работает, вы можете перенаправить ваши программы ALSA на pulseaudio следующим образом asound.conf:

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

Если это не помогает, попробуйте добавить rate 44100илиrate 48000 в свой pcm.bluetoothраздел asound.conf. Может быть, ALSA придет в себя тогда.

Вы также можете попробовать Html5 Youtube Video Controller , хотя я сомневаюсь, что это поможет.

Дмитрий Григорьев
источник
спасибо, но я не заинтересован в решениях с использованием pulseaudio.
Мартин Вегтер
Сожалею. Не могли бы вы попробовать этот параметр скорости?
Дмитрий Григорьев
с параметром скорости (как с 44100 и 48000), я получаю следующее сообщение об ошибке: ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Похоже, блютуз не поддерживает rateпараметр.
Мартин Вегтер
0

Примечание: Текущие версии Firefox, похоже, игнорируют ~ / .asound.conf по неизвестным причинам.

Если вы не используете pulseaudio (это в основном ненужный слой поверх alsa, несмотря на то, что большинство дистрибутивов его устанавливают), то в большинстве случаев вам нужно только выбрать другой аудиовыход по умолчанию.

Это можно сделать с помощью следующего .asound.confв вашем доме:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Замена N его небольшим целым числом, 0 для вашей первой звуковой карты (по умолчанию), 1 для второй и т. Д.

!в!default не отрицание здесь! Это переопределение ранее (общесистемного определения) глобального alsa.conf.

Более сложные конфигурации можно прочитать здесь .

Петер - Восстановить Монику
источник