Bluez 다중 오디오 소스

Bluez 다중 오디오 소스

bluez 스택을 사용하면 여러 오디오 소스를 연결할 수 있나요? 어떻게? 그렇지 않다면 다른 방법이 있나요? 가능하다면 다른 Bluetooth 버전(예: 저에너지)을 이전 버전과 혼합할 수 있습니까?

이것이 가능하지 않다면 (비싼) 해결책은 내 (물리적) 오디오 믹서 뒤에 여러 개의 (물리적) 블루투스 수신기를 연결하는 것입니다 ^-^

배경: "미디어 서버"를 구축하려고 하는데 휴대폰에서 오디오를 스트리밍할 수 있기를 원하지만 "실제로 음악을 재생하고 있지 않은 휴대폰의 연결을 끊어 주시겠어요?"라는 말을 듣고 싶지 않습니다. ]?" 연결해 주실 수 있습니다".

답변1

또한 여러 Bluetooth 장치를 하나의 오디오 스트림(제 경우에는 싱크)에 연결하고 싶습니다.

위의 답변에 힘입어 나는 더 많은 통찰력을 얻고 내가 원하는 작업을 수행하도록 업그레이드하기 위해 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 답변은 SBCSources, MPEG12SourcesMaxConnected1보다 큰 숫자를 설정해야 한다고 말합니다 .

BlueZ 5 및 Pulseaudio를 사용하여 두 번째 소스를 연결하려고 하면 즉시 연결이 끊어집니다. 를 사용하면 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는 여러 Bluetooth 오디오 스트림을 PA에서 오디오 소스로 표시할 수 있는 마지막 버전입니다. PA 3.0부터 오디오 처리를 다음 중 하나로 변경했습니다. (잘 모르겠습니다.)

1) 하나의 BT 오디오 소스/수신기 쌍만 처리하거나

2) (로컬) 오디오 장치당 하나의 BT 오디오 소스/싱크 쌍을 허용합니다.

PA 2.x는 당시 Bluez4와 함께 작업 중이었습니다. Bluez5에 여러 오디오 수신기를 등록하는 것이 여전히 가능한지는 모르겠지만 적어도 PA가 이를 쉽거나 불가능하게 만들지는 않습니다. @philippe가 다른 답변에서 말했듯이 PA가 수신기를 InUse로 처리하면 오디오 스트림의 연결이 끊어집니다(기술적으로 오디오 스트림을 PA 수신기에 연결할 필요가 없더라도).

추신: 실제로 작동하는 동안 두 Bluetooth 장치의 오디오 스트림은 라디오 수준에서 간섭을 일으키므로 두 개의 완벽한 오디오 스트림을 혼합하여 하나 또는 둘 모두 패킷 손실이 발생할 것이라고 기대하지 마십시오.

관련 정보