Bluetooth

藍牙 A2DP:獲取目前比特池

  • April 22, 2022

當使用帶有 SBC 編解碼器的 A2DP 時,產生的比特率主要取決於比特池參數

現在在我的 Linux 機器上,我的目標是在向藍牙 A2DP 接收器播放音頻時知道比特池的值。使用wireshark,我在連接到這個藍牙接收器時擷取了幀,在AVDTP協議幀中,我發現了幀獲取/設置藍牙接收器功能。我可以看到實際的 A2Dp 編解碼器配置:

Service: Media Codec - Audio SBC (44100 | JointStereo | block: 16 | subbands: 8 | allocation: Loudness | bitpool: 2..53) 

我得到了比特池範圍值,但是在播放時,當無線電鏈路壞時,這個值可能會改變……

播放時如何獲取目前比特池?

我在播放之前和播放期間擷取了藍牙幀,但我沒有找到任何給出比特池目前值的幀(播放時大部分幀都是 HCI H4 幀)

播放音頻時,可以使用 blueman 小程序選擇音頻配置文件 A2DP 或 SCO。請務必選擇 A2DP 配置文件。之後,為了解碼幀,必須使用wireshark記錄所有藍牙連接過程。如果不是這種情況,則在wireshark 中將解碼的幀指示為L2CAP 或HCI H4 幀。打開框架時,您會看到

框架不在任何“連接句柄”會話中

因此,在錄製了整個 BT 會話後,我可以獲得 SBC 幀。這些幀中提供了比特池資訊。

在此處輸入圖像描述

位池值是幀中的第 3 個字節,第一個字節始終為 9C

引用自:https://unix.stackexchange.com/questions/394969