蓝牙 A2DP:获取当前位池

蓝牙 A2DP:获取当前位池

将 A2DP 与 SBC 编解码器一起使用时产生的比特率主要取决于bitpool参数

现在,在我的 Linux 机器上,我的目标是了解向蓝牙 A2DP 接收器播放音频时的位池值。使用wireshark,我在连接到这个蓝牙接收器时捕获了帧,在AVDTP协议帧中,我发现了帧获取/设置蓝牙接收器的功能。我可以看到实际的 A2Dp 编解码器配置:

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

我得到了位池范围值,但是在播放时,当无线电链路不好时该值可能会改变......

玩游戏时如何获取当前的比特池?

我在播放之前和播放期间捕获了蓝牙帧,但我没有找到任何提供位池当前值的帧(播放时大多数帧是 HCI H4 帧)

答案1

播放音频时,可以使用 blueman 小程序选择音频配置文件 A2DP 或 SCO。请务必选择 A2DP 配置文件。之后,为了解码帧,必须使用wireshark记录所有蓝牙连接过程。如果不是这种情况,解码后的帧将在wireshark 中指示为L2CAP 或HCI H4 帧。打开框架时你会看到

框架不属于任何“连接句柄”会话

因此,在记录整个 BT 会话后,我可以获得 SBC 帧。这些帧中提供了比特池信息。

在此输入图像描述

答案2

位池值是帧中的第 3 个字节,其中第一个字节始终为 9C

相关内容