【经典蓝牙】蓝牙AVRCP协议分析

简介: 蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。

 协议简介

蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。

image.gif编辑

协议分层

image.gif编辑

AVRCP协议是在L2CAP上进行传输的,平常的控制命令都是通过下层AVCTP通道进行传输,而AVRCP 1.6版本之后支持音乐封面图片传输,音乐封面图片之类的图片数据则使用BIP协议通过OBEX通道进行传输。

AVRCP连接与断开

AVRCP连接

AVCTP 的连接分为两个通道: Control 通道跟 Brwoing 通道。 ,对应的 L2CAP PSM 不同,control通道的 PSM 为 0x0017,AVCTP browing 通道的 PSM 为 0x001B。 两个通道 controller 跟 target 角色都可以发起连接。

注意一点, AVCTP browing 部分基于 L2CAP 不能用 basic mode, 需要用到 Enhanced Retransmission Mode, 而且在双方都支持 AVCTP browing 的情况下才能发起AVCTP browing channel 的连接。

image.gif编辑

CT端发起的连接

image.gif编辑

TG端发起的连接

image.gif编辑

TG端发起control通道的连接,CT端发起Brwoing 通道的连接。

AVRCP断开

断开可以从 AVRCP controller 或者 target 角色操作, 如果有 AVCTP browing 在连接, 那么先断开 AVCTP browing 通道的连接。

image.gif编辑

AVRCP指令

蓝牙AVRCP的命令分为以下几种:

AV/C 指令码

AV/C 指令码是 AV/C通用规范定义的指令,AV/C指令码又细分为以下几种:

UNIT INFO指令: 获取COMPAND_ID指令,对端返回值为固定值,表示蓝牙的COMPAND_ID

SUBUNIT INFO 指令:获取SUBUNIT INFO, 返回值通常为固定值,表示pass through指令的类型。

VENDOR DEPENDENT 指令(重要):蓝牙技术联盟定义的指令,包括控制指令、状态指令、通知指令等,使用的是AV/C设备模型,这些消息是按照AV/C数字接口命令集的规定进行发送的,消息是在AVCTP上进行传输。 比如蓝牙耳机获取手机音乐的播放状态,播放事件通知,调节手机音乐的均衡器模式, 播放循环模式等,这些都是VENDOR DEPENDENT 指令。

PASS THROUGH 指令(重要): 用来控制对端蓝牙的音乐播放状态,例如常用的蓝牙耳机控制手机音乐播放、暂停、上一曲、下一曲等指令都是PASS THROUGH 指令。

浏览指令浏览功能是用来导航对端蓝牙的音乐列表,并控制特定的媒体播放器,使用的是AVCTP的第二通道进行传输的。

封面指令:蓝牙AVRCP 1.6协议支持了传输音乐封面图片,使用的BIP协议进行传输,下层通道使用的是OBEX通道。

PASS THROUGH 指令PASS THROUGH指令指令是AV/C标准指令, 用来控制对端蓝牙设备的音乐播放状态。 常用的控制音乐的播放、暂停、上一曲、下一曲等命令都是通过PASS THROUGH指令下发的。PASS THROUGH命令如下图:

image.gif编辑

PASS THROUGH 指令&浏览指令:Command Type 为 control、 status、 notify的都是VENDOR DEPENDENT指令, Command Type为Browsing的为浏览指令。

image.gif编辑

image.gif编辑

image.gif编辑


目录
相关文章
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
2691 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
存储 安全 算法
【BLE】 BLE配对绑定保姆级介绍
实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。设备跟手机绑定成功后,手机再次重连这个设备时,就会自动跳过service discovery过程,换句话说,配对的时候手机会把设备所有服务和characteristic的handle保存下来,二次重连的时候,直接用以前保存的handle值去操作设备。
4969 1
【BLE】 BLE配对绑定保姆级介绍
|
编解码 安全 Android开发
低功耗蓝牙LE Audio Profile 详细介绍
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
低功耗蓝牙LE Audio Profile 详细介绍
H8
|
物联网 数据安全/隐私保护 智能硬件
女朋友问: 你知道蓝牙耳机的原理吗?
蓝牙是一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485GHz的ISM频段来进行通信。1994年由电信商(Ericsson)发展出这个技术。它最初的设计,是希望创建一个RS-232数据线的无线通信替代版本。
H8
873 17
|
Android开发
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
3093 1
|
网络协议 物联网 芯片
三张图带你入门蓝牙规范
蓝牙自从2001年发布以来,从经典蓝牙发展到了BLE蓝牙,又于2017年引入了蓝牙mesh技术,核心规范版本就于2019年年底升级到了最新的5.2版本,很多同学对蓝牙很有兴趣,但也被会被蓝牙技术里繁多的概念搞迷糊,希望通过这篇文章带大家对蓝牙技术规范有一个基本的了解。本文的面向读者是对网络技术有一定了解但对蓝牙技术不熟悉的同学。
三张图带你入门蓝牙规范
|
编解码 物联网
【BLE】蓝牙5.2 新特性 - LE Audio
连接同步通道是基于蓝牙连接的,首先要先建立ble连接基于时间同步的音频传输机制,可以实现多个设备的数据同步一个master可以建立多个CIG每个CIG可以最多31个CIS每个CIS里面最多有31个subevent链路层有LL_CIS_REQ 和 LL_CIS_RSP来创建CIS无连接的单向的,无应答机制广播通道,对接收者的数量没有限制不仅可以广播数据包还可以广播控制包每个big里面最多可以包含31个bis。
3036 1
【BLE】蓝牙5.2 新特性 - LE Audio
|
算法 网络协议 物联网
|
物联网 API 数据库
一文带你认识蓝牙 GATT 协议
正所谓磨刀不误砍柴工,我们有必要先深入的学习一下 GATT 以及 GATT 相关的一些知识。 本文我们就来了解一下 蓝牙 GATT 到底是什么?同时了解下我们使用的 ESP32-C3 GATT示例的工程的代码结构。
8326 5
一文带你认识蓝牙 GATT 协议
|
编解码 算法 数据格式
【经典蓝牙】蓝牙 A2DP协议分析
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议, 用于传输单声道, 双声道音乐(一般在 A2DP 中用于 stereo 双声道) , 典型应用为蓝牙耳机。         A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。
3796 0
【经典蓝牙】蓝牙 A2DP协议分析