Bluez nhiều nguồn âm thanh


7

Với ngăn xếp bluez, có thể kết nối nhiều nguồn âm thanh không? Làm sao ? Nếu không nó có thể bằng bất kỳ phương tiện khác? Nếu có thể, có thể kết hợp các phiên bản bluetooth khác nhau như năng lượng thấp với phiên bản cũ không?

Nếu không thể, tôi nghĩ một giải pháp (tốn kém) là cắm nhiều máy thu bluetooth (vật lý) phía sau bộ trộn âm thanh (vật lý) của tôi ^ - ^

Bối cảnh: Tôi đang cố gắng xây dựng một "máy chủ phương tiện" và tôi muốn điện thoại có thể truyền phát âm thanh đến nó, nhưng tôi không muốn nghe "làm ơn, bạn có thể ngắt kết nối điện thoại [không thực sự phát nhạc] của mình không Tôi có thể kết nối của tôi ".


Trả lời như một bình luận vì tôi không có câu trả lời đầy đủ cho câu hỏi của bạn. Wikipedia cho biết Bluetooth có thể hỗ trợ liên lạc với tối đa 7 thiết bị trong cấu hình piconet, ad-hoc.

Đúng, tìm thấy thông tin tương tự, 7 là tuyệt vời đối với tôi, nhưng tôi không biết làm thế nào để tiếp cận nó. Chỉ có thể kết nối một thiết bị ngay bây giờ :(
Julien Palard

Câu trả lời:


1

Có những báo cáo rằng điều này nên có thể, đặc biệt là có một phản hồi danh sách gửi thư từ nhà phát triển chính nói rằng nó có thể được thực hiện thông qua audio.conf . Nhưng tệp này không xuất hiện với BlueZ 5 nữa và mã nguồn hiện tại không tạo bất kỳ tham chiếu nào đến các phần được sử dụng để chứa (như "[A2DP]" hoặc "[Tai nghe]").

Điều này có thể hữu ích nếu bạn đang chạy Bluez 4. Bài đăng này trên các diễn đàn maemo (maemo là nhà tài trợ chính cho công việc âm thanh bluetooth trong linux tôi tin) hiển thị một tệp audio.conf mẫu với SourceCounttùy chọn được đặt thành 2. Và điều này AskUb Ubuntu câu trả lời nói rằng bạn phải thiết lập SBCSources, MPEG12SourcesMaxConnectedđể một số cao hơn một.

Với BlueZ 5 và Pulseaudio, khi tôi cố gắng kết nối nguồn thứ hai, nó sẽ ngắt ngay lập tức. Sử dụng hcidump, tôi có thể thấy rằng tất cả đều sai với gói này, được gửi bởi thiết bị nhận âm thanh:

< 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)

Lưu ý cách bồn rửa được đánh dấu là InUse . Sau khi thấy điều này, nguồn ngắt kết nối.

Thật khó để biết tùy chọn cấu hình này đã đi đâu, BlueZ nổi tiếng với tài liệu thưa thớt. Với BlueZ 5, hầu hết các trách nhiệm âm thanh đã được chuyển sang các chương trình khác, chẳng hạn như Pulseaudio. Họ liên lạc qua DBus và Pulseaudio đăng ký điểm cuối với BlueZ. Có lẽ Pulseaudio được yêu cầu đăng ký nhiều điểm cuối, nhưng dường như không có bất kỳ tùy chọn nào về nhiều nguồn trong pulseaudio-module-bluetooth-khám phá.


1

Có thể hơi muộn một chút, nhưng vài năm trước tôi đã thử nghiệm điều này và HAD nó hoạt động được một thời gian, vì vậy tôi sẽ bỏ kinh nghiệm của mình với điều này ở đây.

Pulseaudio 2.x là bản phát hành cuối cùng cho phép nhiều luồng âm thanh bluetooth xuất hiện trong PA dưới dạng nguồn âm thanh. Từ PA 3.0 trở đi, họ đã thay đổi xử lý âm thanh thành (tôi không biết chính xác)

1) xử lý chỉ một cặp nguồn / âm thanh BT, hoặc

2) cho phép có sẵn một cặp nguồn âm / BT cho mỗi thiết bị âm thanh (cục bộ)

PA 2.x đang làm việc tại thời điểm đó với Bluez4. Tôi không biết liệu vẫn có thể đăng ký nhiều bồn âm thanh với Bluez5 hay không, nhưng ít nhất PA không làm cho nó dễ dàng hoặc thậm chí có thể. Giống như @philippe nói trong câu trả lời khác, nếu PA thấy Chìm là InUse, nó sẽ ngắt kết nối luồng âm thanh (mặc dù về mặt kỹ thuật, luồng âm thanh không cần phải kết nối với bồn PA)

PS: Mặc dù nó thực sự hoạt động, các luồng âm thanh của cả hai thiết bị bluetooth đều can thiệp vào mức radio, do đó, đừng hy vọng trộn lẫn 2 luồng âm thanh hoàn hảo, một hoặc cả hai sẽ bị mất gói.


1

Tôi cũng muốn kết nối nhiều thiết bị bluetooth với một luồng âm thanh, trong trường hợp của tôi chìm.

Được thúc đẩy bởi các câu trả lời ở trên, tôi đã bắt đầu nhìn vào mã pulseaudio, để hiểu rõ hơn và có thể nâng cấp nó để làm những gì tôi muốn.

Tôi đã phát hiện ra điều này trong 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");

Đây là mã hàng đầu nên dường như ai đó đang nghĩ đến việc nâng cấp puseaudio để phù hợp hơn với API của Bluez5 tại một số điểm.

Ngoài ra còn có một gợi ý về những gì mã cần khôi phục trong diff này: https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=d504744396316c4b05f477327feb36095f5e68cb

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.