蓝牙音视频控制协议(AVCTP)介绍

这篇具有很好参考价值的文章主要介绍了蓝牙音视频控制协议(AVCTP)介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 零.声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

蓝牙视频教程(跟韦东山老师合作):

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.20.5aeb41f98e267j&id=693788592796

蓝牙交流扣扣群:765961169

Github代码:GitHub - sj15712795029/bluetooth_stack: 这是一个开源的双模蓝牙协议栈(bluetooth.stack)(btstack),可以运行在STM32,Linux.,包含HCI,L2CAP,SDP,RFCOMM,HFP,SPP,A2DP,AVRCP,AVDTP,AVCTP,OBEX,PBAP等协议,后续会继续维护,以达到商用的目的

入手开发板:https://shop220811498.taobao.com/category-1542116976.htm?spm=a1z10.5-c-s.w4010-22329603913.7.39ca7dbe2EA0K3&search=y&catName=%C0%B6%D1%C0%BF%AA%B7%A2%B0%E5#bd

蓝牙学习目录:一篇文章足够你学习蓝牙技术,提供史上最全的蓝牙技术(传统蓝牙/低功耗蓝牙)文章总结,文档下载总结(2020/12/11更新)_Wireless_Link的博客-CSDN博客_蓝牙eir

--------------------------------------------------------------------------------------------------------------------------

一.AVCTP概念

AVCTP(Audio/Video Control Transport Protocol)协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,它是一个总体的协议,具体的控制信息由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式。

几个重要的点:

(1)AVCTP uses point-to-point signaling over connection-oriented L2CAP channels.

(2)AVCTP shall be able to support both controller and target functionalities at both sides of the connection.

(3)Between two devices, multiple AVCTP connections may exist. Each AVCTP connection has its own L2CAP channel with its unique PSM value. There shall be only one AVCTP connection per PSM per ACL.

(4)Each AVCTP packet shall be transported on a single L2CAP packet.

(5)不同L2CAP channel上的相同的transaction Label是属于不同的message的。也就是说,两条L2CAP上的packets是没有关系的,不可能属于同一个message。AVCTP整个框架如下:

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

以上图示我继续做了细化,在整个协议栈的结构如红框:

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

可以看到AVCTP是基于L2CAP协议的,他有两组PSM,分别如下:

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

2.AVCTP封包格式

AVCTP封包格式分为两种:

  1. 没有被分隔的(小于L2CAP MTU)
  2. 被分隔的(大于L2CAP MTU)

下面我们来分别介绍下每种的格式:

2.1没有被分隔的AVCTP

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

Transaction label field (octet 0, bits 7-4) value is provided by the application.传输标示,由上层提供

Packet_type field:(octet 0, bits 3 and 2) is set to zero to indicate that the command/response message is transmitted in a single L2CAP packet.此部分00b标示没有被分割.

C/R: (octet 0, bit 1) indicates whether the message conveys a command frame (0) or a response frame (1). It is provided by the application.0代表command,1代表response

IPID :bit (octet 0, bit 0) is set in a response message to indicate an invalid profile identifier received in the command message of the same transaction; otherwise this bit is set to zero. In command messages this bit is set to zero.在command中设置为0,在response中设置为0代表正常PID

Profile Identifier (PID) field indicates that the command/response frame is coded according to the rules defined by the identified profile. The value shall be identical to the bits UUID of the service class,此部分填写16bit的UUID,比如AVRCP的UUID 0x110e

后续的Message Infomation就是上层协议的数据

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

2.2被分隔的AVCTP

被分隔的的数据包格式一共有三种

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制 

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制 

我们在这里只介绍两个地方,其他跟没有被分隔的一致:

1)Packet_type:The Packet_Type field (see Section 6.1.2) qualifies each L2CAP packet as either first (Packet_Type=01), continue (Packet_Type=10), or end packet (Packet_Type=11). In the case of a nonfragmented message (see Section 6.1.1), this field (Packet_Type=00) simply indicates

that the message fits into a single packet and the number of  packets is not inserted in the message.

总结下:开始封包是01b,继续封包10b,结束封包是11b

2)Number of AVCTP Packets is present in every start packet (octet 2 ) to indicate the total number of AVCTP packets that belong to the same message. As the start packet is also counted, this value is always greater than 1.

总结下:标示整个分隔封包的数量,包含这个开始封包,所以此封包的个数肯定是大于1的。

示意图如下:

蓝牙音视频控制协议(AVCTP)介绍,# 蓝牙协议栈精讲,# 蓝牙协议剖析,蓝牙协议栈,AVCTP,音视频控制协议,蓝牙音乐控制

 文章来源地址https://www.toymoban.com/news/detail-566443.html

到了这里,关于蓝牙音视频控制协议(AVCTP)介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频 ffplay播放控制

    选项 说明 q, ESC 退出播放 f 全屏切换 p, SPC 暂停 m 静音切换 9, 0 9减少音量,0增加音量 a 循环切换音频流 v 循环切换视频流 t 循环切换字幕流 c 循环切换节目 w 循环切换过滤器或显示模式 s 逐帧播放 left/right 向后/向前拖动10秒 down/up 向后/向前拖动1分钟 鼠标右键单击 拖动与显

    2024年02月12日
    浏览(52)
  • 音视频开发 RTMP协议发送H.264编码及AAC编码的音视频(C++实现)

    RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如 FMS , Red5 , crtmpserver 等。RTMP协议可用于实现直播、点播应用,通过 FMLE(Flash Media Live Encoder) 推送音

    2023年04月08日
    浏览(79)
  • 走进音视频的世界——Opus编解码协议

    Opus是一种开源免费的音频编解码器,支持音乐和语音,具有低延时、带内FEC、DTX、PLC等特点,默认22.5ms延时,非常适用网络实时传输。官网:https://www.opus-codec.org。Opus协议收录于RFC6716,使用SILK和CELT两种编码。 目录 一、Opus特点 二、码率、音质、延时 1、音质与码率比较 2、

    2023年04月08日
    浏览(86)
  • 播放Samba协议下的音视频文件

    Samba(也被称为SMB/CIFS)是一个用于在局域网内共享文件和打印服务的协议,广泛应用于Windows和Linux系统之间的文件共享。 使用如jcifs这样的Java库来在安卓应用中集成SMB/CIFS客户端功能。这个库提供了与SMB/CIFS服务器进行通信的API,允许在安卓应用中直接访问共享文件。 代码实

    2024年04月12日
    浏览(53)
  • 【音视频开发】:RTSP服务器协议内容

    RTSP是一个 实时传输流协议 ,是一个 应用层 的协议。通常说的RTSP包括RTSP协议、RTP协议、RTCP协议。 RTSP协议:负责服务器与客户端之间的请求与相应 RTP协议 :负责服务器与客户端之间传输媒体数据 RTCP协议:负责提供有关RTP传输指令的反馈,就是确保RTP传输的质量 吧 三者关

    2024年04月26日
    浏览(50)
  • 【音视频开发】 I2S协议及标准

    1. 介绍 I2S(Inter—IC Sound)总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的音频数据传输。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了

    2024年02月12日
    浏览(45)
  • 音视频的简介及其I2S协议

         将针对声音的各种要求全部叠加到 DAC 和 ADC 芯片上,那么就会得到一个专门用于音频的芯片,也就是音频编解码芯片,音频 CODEC 的本质是 ADC 和 DAC.      采样率和采样位数就是衡量一款音频CODEC 最重要的指标。比如常见音频采样率有 8K、 44.1K、 48K、 192K 甚

    2024年02月02日
    浏览(47)
  • ffmpeg点对点音视频udp协议传输

    参考:https://zhuanlan.zhihu.com/p/636152437?utm_id=0 ffmpeg查看可用设备: 局域网内两台设备间 局域网内两台设备间

    2024年04月10日
    浏览(46)
  • 【音视频】基于webrtc协议浏览器播放rtsp

    现阶段直播越来越流行,直播技术发展也越来越快。Webrtc和rtsp是比较火热的技术,而且应用也比较广泛。本文通过实践来展开介绍关于rtsp、webrtc的使用过程。 本文是基于ffmpeg技术将mp4转换为rtsp视频流,并且将流推送到流媒体服务器(EasyDarwin)上,而后采用了webrtc-streamer对

    2024年01月19日
    浏览(74)
  • 音视频开发-ffmpeg介绍-系列一

    目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念: 三.ffmpeg、ffplay、ffprobe区别      4.1 ffmpeg是用于转码的应用程序  4.2 fffplay是用于播放的应用程序       4.3 ffprobe是用于查看文件格式的应用程序      4.4 ffmpeg是用于转码的应用程

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包