蓝牙音乐之A2DP

蓝牙音乐之A2DP

在这里插入图片描述

本篇文章简单聊聊蓝牙音乐涉及到的A2DP协议,大家平常使用蓝牙耳机听音乐就是通过该协议实现的,此协议有时也被称为媒体音频协议。通过手机蓝牙设置中已连接的设备可以查看具体连接的哪些协议,那其中的媒体音频那一项就对应于本期所要分享的A2DP协议。

A2DP:Advanced Audio Distribution Profile,高级音频分发协议的简写,在这里大家需要区分开高级音频和蓝牙音频,蓝牙音频一般指传输于蓝牙SCO链路上的音频,也就是蓝牙电话;而高级音频指的传输于蓝牙ACL链路上的高质量音频,即为蓝牙音乐的媒体音频,别再傻傻分不清蓝牙音频和高级音频了哦。

一个完整的蓝牙音乐不但包含A2DP音频流,还包含AVRCP控制流,AVRCP后续再给大家分享,本期就重点聊聊蓝牙音乐音频流这点事。

A2DP协议本质上是一个应用层协议,它也是基于其他协议起作用的,详细的协议依赖关系见下图:
在这里插入图片描述

A2DP协议核心概况:在蓝牙核心协议的基础上,通过上层A2DP协议将两个蓝牙设备连接到同一个piconet(微微网)中,实现蓝牙音乐音频流的传输功能。

具体的协议模型如下:
在这里插入图片描述

协议规定了两种角色 SRC + SNK

  • SRC:Source,数字音频流的源,负责将源数据发送到SNK端
  • SNK:Sink,数字音频流的接收器,负责接收SRC发过来的源数据

这两种角色的扮演者在生活中很是常见,手机蓝牙作为生活中使用最多的设备,不言而喻其主要作为SRC存在,那对应的蓝牙耳机、音箱等设备就作为SNK的角色存在,具体的音频流如下图所示:
在这里插入图片描述

音频流从SRC到SNK中间经历的步骤很多,比如MP3、PCM、编码、加密(可选)、数据封装、传输、数据解析、解密(可选)、解码、PCM等等步骤:
在这里插入图片描述

音频流传输过程中涉及到的最重要步骤就是编解码,出于对数据的保护,在设备间传输音频数据时需要按照一定的格式将数据编码,编码后的数据到达接收方再按照相同的编码格式进行解码,将音频数据解析成PCM播放。

蓝牙音频传输在当今市面上有如下几种常见的编码方式可供选择:
在这里插入图片描述

A2DP协议最早规定的基础编码方式也是强制性的编码方式为SBC,AAC是由多家公司共同开发,苹果设备中对AAC有着广泛的支持,aptX类的编码方式的专利权属于高通,而LDAC则是索尼大法在2015年推出的无线音频编码技术,LDAC也是众多无线音频编码方式中最为接近无损编码的方式。以上五种编码方式传输的蓝牙音乐音质从低到高排列为:
SBC < AAC < aptX < aptX-HD < LDAC

其实华为在2018年发布P20手机时也推出过一种无线音频编码方式HWA(HiRes Wireless Audio),也被称为LHDC,这是继高通的aptX-HD和索尼的LDAC之后业界公认的第三种蓝牙高音质编码方式。但是华为内部在综合考量下已经暂停了对HWA(LHDC)的支持,毕竟aptX-HD和LDAC相较于HWA支持更广(用户选择aptX-HD或LDAC,他不香嘛)

从上述的协议模型中可以看出A2DP协议中最关键的就是AVDTP层,在协议中连接起应用层和蓝牙核心协议层之间的交互,接下来就重点分析下AVDTP的相关交互知识点。

A2DP连接过程中涉及到多个AVDTP交互过程,我们已经知道由于蓝牙音乐音频流的单向流动性从而决定了SRC和SNK这两种角色,而AVDTP的交互过程中也涉及到两种角色:INT + ACP,简单理解就是过程的发起者为INT,该过程的接收应答者则是ACP。由于A2DP连接的两个设备在连接之初由于其功能已经被应用层定义好,所以SRC、SNK的角色已被确定,而INT、ACP却是根据过程的启动而定,因此某一个蓝牙设备可能是INT也可能是ACP。

AVDTP:全程为 AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL,该协议定义了A/V流协商、建立和传输的过程,还指定了在这些设备之间交换的消息格式,以便在A/V分布应用程序中传输它们的音视频流。

AVDTP定义了如下这些交互过程:
在这里插入图片描述

也定义了如下状态,方便AVDTP的过程交互:
在这里插入图片描述

这些状态在交互过程的切换图为:
在这里插入图片描述

完整的A2DP连接包含如下几个AVDTP过程:DISCOVER、GET_CAPABILITIES、SET_CONFIGURATION、OPEN。

  • DISCOVER:发现对端设备内支持的流端点(编码方式编号)
  • GET_CAPABILITIES:获取所定义的流端点(SEP)的基本功能信息
  • SET_CONFIGURATION:设置本次连接的配置(基于双方支持的编码方式,选取最优的编码方式)
  • OPEN:成功配置后,建立A2DP连接打开音频流

以上过程全部完成就建立起了AVDTP的信令通道,AVDTP随后也会建立起数据通道。

  • 信令通道:控制蓝牙音乐音频流的建立、打开、关闭、暂停等操作
  • 数据通道:传输蓝牙音乐数据

A2DP在建立音频流前如果远端设备的AVDTP版本未知,则设备还需发起SDP服务查询以在远端设备上获得其支持的AVDTP版本。

完整的HCI交互流程见如下截图:
在这里插入图片描述

本篇我们就简单分享了A2DP协议的建立以及AVDTP协议的相关了解。对此感觉的同学可以参考这两篇蓝牙官方文档《A2DP_v1.3.2.pdf》、《AVDTP_SPEC_V13.pdf》。

感兴趣的小伙伴欢迎私信留言一起讨论,共同学习,一起进步。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44260005/article/details/107225738
今日推荐