AVDTP学习
AVDTP(Audio/Video Distribution Transport Protocol,音视频分发传输协议)
-
是 A2DP(高级音频分发协议)的底层承载协议;
-
底层依赖 面向连接的 L2CAP 信道;
-
作用:承载立体声音乐媒体数据流 + 音频链路控制信令;
-
区分对照:
AVDTP:传输音频媒体数据包(音乐声音)
AVCTP:承载 AVRCP 播放控制指令(播放 / 暂停 / 切歌 / 音量)
两条协议相互独立,使用两条不同 L2CAP 信道,可以同时工作。
AVDTP( A/V Distribution Transport Protocol)就是音视频分布传输协议,主要用于传输音频/视频数据。在整个协议栈的架构 图如下:

AVDTP的底层是L2CAP层
AVDTP一共有以下几个组件:

1.Signalling(信令模块)
负责所有 AVDTP 控制命令、响应的交互,也就是表格中所有AVDTP_XXX指令收发,用于音频会话的建立、配置、启停、销毁。
2.Stream Manager(媒体流管理)【核心】
-
媒体包封装、时间戳、序列号维护;
-
抖动缓冲管理;
-
丢包统计,并向上层 A2DP 反馈网络质量;
-
媒体数据流调度。
3.Recovery(重传恢复组件)
可选功能,提供媒体数据包重传机制,改善无线丢包带来的爆音、卡顿。
4.Adaptation Layer(适配层)
-
支持多路复用:一条 L2CAP 传输通道 (TCID) 承载多条独立音频会话 (TSID);
-
头部压缩,降低空中包负载开销,节省带宽
Signal 信令指令分类
能力发现与配置阶段(会话建立前置)
| 指令名 | 编码 | 核心作用 |
|---|---|---|
| AVDTP_DISCOVER (0x01) | 0x01 | 音源 (Sink) 查询耳机 / 音箱 (Source) 支持的音频流端点 (SEP) 数量与标识,是 A2DP 连接第一步 |
| AVDTP_GET_CAPABILITIES (0x02) | 0x02 | 查询单个 SEP 的基础音频能力:支持的编码 (SBC/AAC/aptX)、采样率、声道、码率 |
| AVDTP_GET_ALL_CAPABILITIES (0x0C) | 0x0C | 获取完整扩展能力,包含高级编码参数、保护机制、延迟配置 |
| AVDTP_SET_CONFIGURATION (0x03) | 0x03 | 下发协商好的音频配置(编码、采样率),绑定本地 SEP 与远端 SEP,建立逻辑音频流 |
| AVDTP_GET_CONFIGURATION (0x04) | 0x04 | 读取当前已生效的音频流配置参数 |
| AVDTP_RECONFIGURE (0x05) | 0x05 | 播放中途动态修改音频参数(切换采样率、编码格式) |
音频流启停控制阶段
| 指令名 | 编码 | 核心作用 |
|---|---|---|
| AVDTP_OPEN (0x06) | 0x06 | 打开音频传输通道,准备发送音频数据包,链路进入就绪状态 |
| AVDTP_START (0x07) | 0x07 | 正式开始传输音频媒体数据包,耳机开始出声(对应手机点击播放) |
| AVDTP_SUSPEND (0x09) | 0x09 | 暂停音频传输,通道保留(对应手机暂停,可快速恢复播放) |
| AVDTP_CLOSE (0x08) | 0x08 | 关闭音频传输通道,释放媒体流资源(切歌、退出音乐 APP 触发) |
异常与辅助控制
| 指令名 | 编码 | 核心作用 |
|---|---|---|
| AVDTP_ABORT (0x0A) | 0x0A | 强制中断当前音频链路,用于链路异常、严重丢包时快速重置会话 |
| AVDTP_SECURITY_CONTROL (0x0B) | 0x0B | 音频流加密 / 安全参数交互,安全连接场景使用 |
| AVDTP_DELAYREPORT (0x0D) | 0x0D | 延迟上报:耳机上报音频缓冲延迟,手机动态调整音画同步偏移(影音场景防口型不同步) |
| Reserved (0x00) | 0x00 | 保留值,无业务定义,禁止使用 |
完整 A2DP 标准交互时序
-
两台设备建立 BR/EDR ACL 物理连接;
-
通过 SDP 服务发现 查询 A2DP 服务,获取 AVDTP 对应的 L2CAP PSM,创建 AVDTP 专用 L2CAP 信道;
-
AVDTP_DISCOVER:查询对端 SEP 音频端点; -
AVDTP_GET_ALL_CAPABILITIES:互相查询支持的编码格式(SBC/AAC/aptX/LDAC 等); -
AVDTP_SET_CONFIGURATION:协商统一音频参数,创建逻辑音频流; -
AVDTP_OPEN:开启音频通道; -
AVDTP_START:开始持续发送压缩音频媒体包,音乐播放; -
操作分支:
-
暂停音乐:
AVDTP_SUSPEND(通道保留,可快速恢复) -
切歌 / 停止播放:
AVDTP_CLOSE -
链路严重异常:
AVDTP_ABORT强制销毁会话
-
9.影音同步场景:耳机周期性发送 AVDTP_DELAYREPORT 上报缓冲延迟。

延迟原因分析


音频延迟产生来源
整套蓝牙音频总延迟由多个环节叠加构成:
-
Source 端(手机)延迟
PCM 音频采集 → 音频编码 (SBC/AAC) → AVDTP 封装排队缓冲;
-
空中传输延迟
蓝牙基带调度、重传纠错、2.4G 射频干扰丢包;
-
Sink 端(耳机)延迟【占比最高】
射频接收 → L2CAP 重组 → AVDTP 抖动缓冲 (jitter buffer) → 音频解码 → DAC 数模转换;
抖动缓冲是最关键可调参数:缓冲开大抗卡顿、延迟升高;缓冲缩小降低延迟,但容易出现丢包爆音。
易混淆协议区分
-
AVDTP + A2DP
A2DP 是上层 Profile 规范;AVDTP 是底层传输协议,负责
音频媒体数据流(音乐声音)。
-
AVCTP + AVRCP
AVRCP 是音视频遥控 Profile;AVCTP 为底层传输协议,负责
控制指令(播放 / 暂停 / 切歌 / 音量)。
-
通信特点:
-
音频数据流(AVDTP 媒体包):单向传输 Source → Sink;
-
AVDTP 信令、AVRCP 控制指令:双向请求 - 应答交互。
-
抓包调试快速定位经验
-
抓包看到
AVDTP_START之后,才会出现大量媒体音频数据包; -
播放无声:优先检查
SET_CONFIGURATION是否协商成功、编码格式两端是否匹配、是否发送OPEN + START; -
视频影音不同步:核查耳机是否周期性上报
DELAYREPORT; -
音乐频繁卡顿爆音:查看是否大量出现重传、或者频繁收到
AVDTP_ABORT链路重置指令。
更多推荐

所有评论(0)