如何告诉Firefox使用其他ALSA设备?


13

我有一个板载声卡,也有一个连接的蓝牙耳机。我已在中配置了蓝牙设备/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中列出)

当我希望应用程序使用我的蓝牙alsa设备时,必须指定它,例如:

mplayer -ao alsa:device=bluetooth file.mp3

对我来说很好。但是我需要一种方法来告诉我的浏览器也使用蓝牙alsa设备。

我找到了一种使用--alsa-output-device命令行选项启动铬的方法:

chromium --alsa-output-device=bluetooth

我需要类似的方法来启动Firefox,但找不到任何方法。

我怎么能告诉Firefox中使用蓝牙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,确实在蓝牙耳机中获得了声音,但是firefox在100%CPU(在我的4核上)上运行,并且youtube视频以10倍的速度播放(并且声音相应地(乱码))。当我没有启动Firefox时ALSAPCM=bluetooth,一切正常,声音将在默认的alsa设备上播放。


哇,一个拥有21个金牌和仅28个代表的用户!你是怎么做到的?
德米特里·格里戈里耶夫

4
@Dmitry Grigoryev-我花了很多钱在赏金上……
Martin Vegter

Answers:


9

显然,firefox没有选项,但是您可以通过环境变量来操纵ALSA输出。

尝试例如:

ALSA_PCM_CARD=bluetooth firefox

或者,如果这不起作用,请尝试编写一些.asoundrc脚本

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

(用您的正常pcm替换“ hw:hdmi”)。然后,如果要让程序使用特定的PCM,请使用:

ALSAPCM=bluetooth firefox

资料来源:


第一种方法不起作用。当我尝试第二种方法时,我确实在蓝牙耳机中获得声音,但是firefox以100%CPU(在我的4核上)运行,并且youtube视频以10倍的速度播放。我不明白发生了什么。当我没有启动Firefox时ALSAPCM=bluetooth,一切正常,并且声音在默认的alsa设备上播放。
Martin Vegter '16

有不同的ALSA环境变量(请参见Archlinux Wiki的链接),也许另一个也可以。我真的对CPU问题感到惊讶,我不知道是什么原因引起的。
lgeorget

1
CPU负载很可能是由于视频和音频以10倍速播放和流式传输而造成的。神秘之处在于为何ALSAPCM=bluetooth将视频速度更改为10倍。
Martin Vegter '16

@MartinVegter好吧,我在Wiki的帖子中复制粘贴了pcm。!default的定义,它可能不适合您的特定情况。特别是“类型插头”和“从属”部分。
lgeorget

0

看起来好像是这个bug的化身。建议了一些解决方案,但它们似乎是特定于Intel的。

尝试使用pulseaudio。如果可行,您可以使用以下命令将ALSA程序重定向到pulseaudio asound.conf

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

如果没有帮助,尝试添加rate 44100rate 48000pcm.bluetooth您的部分asound.conf。也许ALSA届时就会意识到。

您也可以尝试使用Html5 Youtube视频速度控制器,尽管我怀疑它会有所帮助。


谢谢,但是我对使用Pulseaudio的解决方案不感兴趣。
Martin Vegter '16

抱歉。那你可以试试这个速率参数吗?
德米特里·

使用rate参数(同时使用44100和48000),出现以下错误:ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate。看起来蓝牙不支持该rate参数。
Martin Vegter '16

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的覆盖。

更多棘手的配置可以在这里阅读。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.