Bluezマルチオーディオソース

Bluezマルチオーディオソース

bluezスタックを使用すると、複数のオーディオソースを接続できますか?どのように?そうでなければ他の方法がありますか?可能であれば、他のBluetoothバージョン(低エネルギーなど)を以前のバージョンと混在させることはできますか?

これが不可能な場合(高価な)解決策は、私の(物理的)オーディオミキサーの後ろに複数の(物理的)Bluetoothレシーバーを接続することです^-^

背景:「メディアサーバー」を構築しようとしていますが、携帯電話からオーディオをストリーミングできるようにしたいのですが、「実際に音楽を再生していない携帯電話の接続を切断してもよろしいですか?」という言葉を聞きたくありません。 ]? 「つなげていただけます」。

答え1

また、複数のBluetoothデバイスを1つのオーディオストリーム(私の場合はシンク)に接続したいと思います。

上記の回答に基づいて、私はより多くの洞察力を得て、私が望むことをするようにアップグレードするためにpulseaudioコードを調べ始めました。

私はこれを見つけましたhttps://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/src/modules/bluetooth/bluez5-util.c:

/* Currently only one A2DP codec is supported, so register only SBC * Support for multiple codecs needs to use a new Bluez API which * pulseaudio does not implement yet, patches are waiting in queue */ a2dp_codec_sbc = pa_bluetooth_get_a2dp_codec("sbc");

これはツリートップコードにあるので、誰かがある時点でBluez5 APIとよりよく一致するようにpuseaudioをアップグレードすることを検討しているようです。

この違いは、復元する必要があるコードも示しています。 https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=d504744396316c4b05f477327feb36095f5e68cb

答え2

これが可能でなければならないという報告があります。特に、主要開発者のメーリングリストの回答は次のとおりです。これはaudio.confを介して行うことができます。。ただし、このファイルにはBlueZ 5が付属していなくなり、現在のソースコードは一度含まれている部分(「[A2DP]」や「[Headset]」など)を参照していません。

Bluez 4を実行している場合に便利です。前茂フォーラムに登場したイーグル(maemoはLinuxでのBluetoothオーディオ操作の主なスポンサーだと思います。)SourceCountオプションが2に設定されたサンプルaudio.confファイルを表示します。このAskUbuntuの答えはSBCSourcesMPEG12SourcesおよびMaxConnected1より大きい数字を設定する必要があると言います。

BlueZ 5とPulseaudioを使用して2番目のソースを接続しようとすると、すぐに切断されます。を使用すると、hcidumpオーディオを受信するデバイスから送信されたこれらのパケットがすべて間違っていることがわかります。

< ACL data: handle 62 flags 0x00 dlen 10
    L2CAP(d): cid 0x0042 len 6 [psm 25]
      AVDTP(s): Discover rsp: transaction 0 nsp 0x00
        ACP SEID 1 - Audio Source
        ACP SEID 2 - Audio Sink (InUse)

流し台ラベルがどのように指定されているかを確認してください。使用中。これを見た後、ソースの接続が失われました。

この設定オプションがどこに行ったかを言うのは難しいです。 BlueZは文書が不足していることで有名です。 BlueZ 5では、ほとんどのオーディオ責任がPulseaudioのような他のプログラムに移されました。彼らはDBusを介して通信し、PulseaudioはBlueZにエンドポイントを登録します。おそらくpulseaudioは複数のエンドポイントを登録する必要がありますが、pulseaudio-module-bluetooth-discoverには複数のソースのオプションがないようです。

答え3

少し遅れるかもしれませんが、数年前にこの方法を試してみて、しばらく効果がありましたので、ここで私の経験を共有します。

Pulseaudio 2.xは、PAからオーディオソースとして複数のBluetoothオーディオストリームを表示できる最後のバージョンです。 PA 3.0以降、オーディオ処理を次のいずれかに変更しました。 (わかりません。)

1)1つのBTオーディオソース/レシーバーペアのみを処理する

2)(ローカル)オーディオデバイスごとに1つのBTオーディオソース/シンクペアを許可します。

PA 2.xは当時Bluez4と連携していました。 Bluez5に複数のオーディオレシーバーを登録することがまだ可能かどうかはわかりませんが、少なくともPAはそれを簡単または不可能にしません。 @philippeが他の答えで述べたように、PAが受信機をInUseとして処理すると、オーディオストリームの接続が失われます(技術的にオーディオストリームをPA受信機に接続する必要はありません)。

PS:実際に動作している間、両方のBluetoothデバイスのオーディオストリームはラジオレベルで干渉を引き起こすので、2つの完全なオーディオストリームを混在させることで、1つまたは両方のパケット損失が発生することを期待しないでください。

関連情報