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を起動するための同様の方法が必要ですが、見つかりませんでした。

どのように私は変更することなく、私のブルートゥースALSAデバイスを使用するようにFirefoxのを伝えることができ/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%CPU(4コア)で実行され、youtubeビデオは10倍の速度で再生されます(それに応じて音声は文字化けします)。 Firefoxを起動せずALSAPCM=bluetoothにFirefoxを起動すると、すべてが問題なく、デフォルトのalsaデバイスでサウンドが再生されます。


うわー、21個の金バッジとわずか28人の担当者を持つユーザー!どうやってやったの?
ドミトリーグリゴリエフ

4
@Dmitry Grigoryev -私は...恵みのすべてを費やす
マーティンVegter

回答:


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

ソース:


最初のアプローチは機能しません。2番目の方法を試すと、Bluetoothヘッドセットで音が聞こえますが、firefoxCPUが100%(4コア)で実行され、youtubeビデオが10倍の速度で再生されます。何が起こっているのか分かりません。Firefoxを起動せずALSAPCM=bluetoothにFirefoxを起動すると、すべてが問題なく、デフォルトのalsaデバイスでサウンドが再生されます。
マーティンベグター16

さまざまなALSA環境変数があり(Archlinux wikiへのリンクを参照)、別の環境変数が機能する可能性があります。CPUの問題には本当に驚いていますが、何が原因なのかわかりません。
lgeorget

1
CPU負荷は、ビデオとオーディオが10倍の速度で再生およびストリーミングされているという事実が原因である可能性が最も高くなります。謎は、ALSAPCM=bluetoothビデオの速度を10倍に変更する理由です。
マーティンベグター16

@MartinVegterまあ、私はwikiからの私の投稿のpcm。!defaultの定義をコピーして貼り付けましたが、それはあなたの特定のケースに適していないかもしれません。特に「タイププラグ」と「スレーブ」部分。
lgeorget

0

このバグの化身のようです。いくつかの解決策があります提案されが、それらはインテル固有のものです。

pulseaudioを使用してみてください。動作する場合は、次を使用してALSAプログラムをpulseaudioにリダイレクトできますasound.conf

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

それでも解決しない場合は、rate 44100またはrate 48000pcm.bluetoothセクションを追加してみてくださいasound.conf。おそらく、ALSAはその感覚にたどり着くでしょう。

Html5 Youtube Video Speed Controllerも試してみてください。


感謝しますが、私はpulseaudioを使用したソリューションには興味がありません。
マーティンベグター

ごめんなさい。そのレートパラメータを試してみてください。
ドミトリーグリゴリエフ

レートパラメータ(44100と48000の両方)を使用すると、次のエラーが表示されますALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate。bluetoothは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のオーバーライドです。

よりトリッキーな設定については、こちらをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.