当前位置: 首页 > news >正文

蓝牙音视频远程控制协议(AVRCP)介绍

 零.声明

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

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

第二篇: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

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

 一. AVRCP概念

AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和audio/video控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于AVCTP传输协议。该Profile定义了AV/C数字命令控制集。命令和信息通过AVCTP(Audio/Video Control Transport Protocol)协议进行传输。浏览功能通过AVCTP的第二个channel而不是AV/C。传输媒体信息通过基于OBEX协议的BIP(Bluetooth Basic Imaging Profile)协议。架构如下:

在我们协议栈的位置是:

二.AVRCP角色

The following roles are defined for devices that comply with this profile:

The controller (CT) is a device that initiates a transaction by sending a command frame to a target. Examples for CT are a personal computer, a PDA, a mobilephone, a remote controller or an AV device (such as an in car system, headphone, player/recorder, timer, tuner, monitor etc.).

The target (TG) is a device that receives a command frame and accordingly generates a response frame. Examples for TG are an audio player/recorder, a video player/recorder, a TV, a tuner, an amplifier or a headphone。

说白了就是发送命令控制的就是AVRCP controller,那么接受命令的就是AVRCP target.

并且AVRCP定义了4中类别:

1)Category 1: Player/Recorder,播放器/录音器

Basic operations of a player or a recorder are defined, regardless of the type of media

(tape, disc, solid state, etc.) or the type of contents (audio or video, etc.).

2)Category 2: Monitor/Amplifier,显示器/放大器

The category 2 is to define basic operations of a video monitor or an audio amplifier.

3)Category 3: Tuner,调试器

The category 3 defines the basic operation of a video tuner or an audio tuner.

4)Category 4: Menu,菜单

The basic operations for a menu function are defined in category 4. The method to display

menu data is not specified. It  may  be a display panel of the device itself, or on-screen

display (OSD) on an external monitor.

角色有以下几种应用场景:

1)单独充当AVRCP controller的设备

  其中遥控器只是发送Category 1的command的指令来控制播放器,然后播放器把音乐发送给耳机(音频协议不再本章范围内)

 2)车载娱乐系统

  

其中车载IVI来通过Category 1的command的指令来控制手机,手机发送音乐给IVI(音频协议不再本章范围内)

 3)两个设备之间的远程控制以及Audio流

  

这个跟第二种情况类似,是一种情况的升级版,也就是把控制跟接受音频放在了同一个设备上,其中Headphone只发送Category 1的指令来控制

 4)每个设备都充当AVRCP双角色的设备

  

以上两个设备都是AVRCP双角色(controller,target),耳机通过Category 1的指令充当控制播放暂停等(此时Headphone就是AVRCP controller,Disc Player是AVRCP target),Disc Player通过Category 2来控制音量(此时Disc Player是AVRCP controller,此时Headphone就是AVRCP target)

 5)带有LCD的远程控制

  

此耳机带有LCD显示功能,此时可以通过Category 1的命令不仅可以做常规的play/pause等功能,还可以通过Browing来浏览目录文件夹等。

 6)全功能显示的车载系统

  

车机通过Category 1来进行常规的play/pause/browing功能,还可以通过Cover Art来下载专辑图片等功能。

相关文章:

蓝牙音视频远程控制协议(AVRCP)介绍

零.声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Trans…...

家庭WIFI路由器、无线网卡购买指南

一、参考资料 【Wi-Fi】802.11/802.11b/802.11g/802.11n/802.11a/802.11ac/802.11ax/802.11be 从带宽到路由,从有线到无线,从需求到选购,从布网到实测,全部说尽。基础篇(1) 【一文详解】802.11a/b/g/n/ac/…...

Matlab2022b软件如何切换中/英文界面?

在中文Windows操作系统中,MATLAB2015b之后版本安装默认为中文版,但有部分用户还是习惯使用英文界面下的MATLAB(个人偏好),下面以R2022b版分享一下中/英文界面的切换方法,超简单。 一、中文切换为英文界面&…...

通过后端数据交互,实现【会议Oa小程序】首页数据渲染

🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《微信小程序 》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,…...

I.MX6U开发板上的Qt串口编程

真正串口通讯所需的功能是比较多的,此处的上位机只实现发送和接收功能。因为Linux、windows和开发板上均有串口,所以所开发的上位机在其上都是可以运行的。 文章目录 1. 资源简介2. 应用实例2.1 项目简介:2.2 03_serialport.pro2.3 mainwind…...

深入理解多线程编程和 JVM 内存模型

文章目录 1. 理解进程和线程的概念进程(Process)线程(Thread) 2. 理解竞态条件和死锁竞态条件(Race Condition)死锁(Deadlock) 3. JVM 内存模型堆(Heap)栈&am…...

QML(25)——文本输入框组件的区别(TextField TextInput TextArea TextEdit)

目录 效果展示适用场景文本组件TextLabelText和Label的区别 单行文本输入框TextFieldTextInputTextField 和 TextInput的区别 多行文本输入框TextAreaTextArea 和 TextEdit 的区别 效果展示 适用场景 场景组件属性短文本Text长文本 末尾省略Textelide: Text.ElideRight文本设置…...

SpringBoot连接MySQL密码错误,报错:Access denied for user

记:一次连接MySQL报密码错误,Access denied for user 检查步骤: 核对用户和密码是否正确,用工具登陆试下。如果配置文件是yml格式,配置密码是123456这种纯数字,记得加上单/双引号。检查云上数据库配置&am…...

如何使用visual studio 2010构建SQLite3.lib文件

sqlite3官网只提供了dll,并没有lib文件。需要自己生成sqlite3.lib。因项目升级到x64,以前并没有生成64位的链接库,需要自己创建。本人电脑操作系统windows 10, 开发环境为visual studio 2010。下面是详细生成过程。 1. 从源下载源&#xff08…...

反转链表review

反转链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class …...

UG\NX二次开发 获取用户默认设置中的绘图信息 UF_PLOT_ask_session_job_options

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 m0_58724732 订阅本专栏,非常感谢。 简介 UG\NX二次开发 获取用户默认设置中的绘图信息 UF_PLOT_ask_session_job_options 效果 代码 #include "me.hp...

数字图像处理实验记录五(图像的空间域增强-锐化处理)

前言: 文章目录 一、基础知识1,什么是锐化?2,为什么要锐化?3,怎么进行锐化? 二、实验要求任务1:任务2:任务3: 三、实验记录:任务1:任…...

基于水基湍流优化的BP神经网络(分类应用) - 附代码

基于水基湍流优化的BP神经网络(分类应用) - 附代码 文章目录 基于水基湍流优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.水基湍流优化BP神经网络3.1 BP神经网络参数设置3.2 水基湍流算法应用 4.测试结果…...

0010【Edabit ★☆☆☆☆☆】Maximum Edge of a Triangle

【Edabit 算法 ★☆☆☆☆☆】Maximum Edge of a Triangle algorithms math numbers Instructions Create a function that finds the maximum range of a triangle’s third edge, where the side lengths are all integers. Examples nextEdge(8, 10) // 17 nextEdge(5, 7…...

Godot 官方2D C#重构(3):TileMap使用

文章目录 前言Godot Tilemap使用Tilemap使用TileSet和TilemapTilemap 图片资源添加TileSet,开始切图导入图片切图 简单添加TileMap如何使用 Auto Tilemap使用Auto Tilemap 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 Godot Tilem…...

6.DApp-用Web3实现前端与智能合约的交互

题记 用Web3实现前端与智能合约的交互&#xff0c;以下是操作流程和代码。 准备ganache环境 文章地址&#xff1a;4.DApp-MetaMask怎么连接本地Ganache-CSDN博客 准备智能合约 文章地址&#xff1a; 2.DApp-编写和运行solidity智能合约-CSDN博客 编写index.html文件 <!…...

数据异常值检测

数据异常值检测 参考&#xff1a; 数据异常值的检测方法-基于Python 独家 | 每个数据科学家应该知道的五种检测异常值的方法&#xff08;附Python代码&#xff09; 异常检测主要方法总结 14种数据异常值检验的方法&#xff01; 14种数据异常值检验的方法 浅谈数据挖掘中的…...

监听redis键失效事件实现延迟功能

用Redis实现延迟队列&#xff0c;我研究了两种方案&#xff0c;发现并不简单 SpringBoot实现Redis失效监听事件—KeyExpirationEventMessageListener Redis 监听过期的key&#xff08;KeyExpirationEventMessageListener&#xff09; 项目背景 需求上说&#xff0c;需要延迟…...

使用UniApp实现视频数组自动下载与播放功能:一步步指导

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

C语言笔试面试必刷题

&#x1f38a;【面经】专题正在持续更新中&#xff0c;内含C语言&#xff0c;数据结构&#xff0c;Linux&#xff0c;网络编程等✨&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - ​​…...

从零到一:在Win10与Visual Studio 2022中部署OpenCV 4.8.0全攻略

1. 环境准备&#xff1a;下载与安装OpenCV 4.8.0 OpenCV作为计算机视觉领域的瑞士军刀&#xff0c;安装过程其实比你想象中简单。我最近刚在Win10上配过最新版4.8.0&#xff0c;实测比旧版本更稳定。首先打开OpenCV官网&#xff08;直接搜"OpenCV GitHub"第一个就是&…...

【2026奇点智能技术大会权威解码】:AI代码摘要的5大工业级落地陷阱与3个月速成实践路径

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI代码摘要 2026奇点智能技术大会(https://ml-summit.org) 核心发布&#xff1a;CodeLens-7 智能摘要引擎 大会首次开源 CodeLens-7&#xff0c;一款面向多语言、跨上下文的轻量级AI代码摘要模型。该模型在Python、Go、Ru…...

SQL插入数据时忽略错误行_使用错误日志表暂存失败条目

INSERT IGNORE 无法记录错误详情&#xff0c;因其静默忽略所有错误&#xff08;包括主键冲突、字段超长、类型不匹配等&#xff09;&#xff0c;不触发错误日志、不返回具体错误码和消息&#xff0c;导致无法审计、重试或告警。MySQL INSERT IGNORE 为什么不能记录错误详情INSE…...

SITS2026 AGI原型系统性能数据全曝光,98.7%任务自闭环率,为什么传统评估基准已失效?

第一章&#xff1a;SITS2026 AGI原型系统性能数据全曝光 2026奇点智能技术大会(https://ml-summit.org) SITS2026 AGI原型系统于2026年3月在ML Summit实验室完成全栈基准测试&#xff0c;覆盖推理延迟、多模态对齐精度、长程记忆检索吞吐及能源效率四大核心维度。所有测试均在…...

从芯片内部MOS管到整车线束:一文拆解CAN总线显性/隐性电平的硬件实现

从芯片内部MOS管到整车线束&#xff1a;一文拆解CAN总线显性/隐性电平的硬件实现 在汽车电子和工业控制领域&#xff0c;CAN总线如同神经系统般贯穿整个系统&#xff0c;承载着关键数据的传输。而这一切的起点&#xff0c;却始于芯片内部几个微小的MOS管开关动作。本文将带您深…...

python pip-audit

# 聊聊 Python 项目里的安全卫士&#xff1a;pip-audit 最近在维护几个老项目&#xff0c;升级依赖的时候总有点提心吊胆。不知道你有没有这种体验——明明只是更新了一个小版本&#xff0c;测试也通过了&#xff0c;但心里总不踏实&#xff0c;担心某个不起眼的依赖包里藏着已…...

AGI研发已无“安全窗口期”:从GPT-5延迟到中国“伏羲计划”提速,90天内5国密集调整国家级AGI战略(附原始政策文本对照表)

第一章&#xff1a;AGI研发的国际竞争格局 2026奇点智能技术大会(https://ml-summit.org) 全球通用人工智能&#xff08;AGI&#xff09;研发已进入国家战略竞速阶段&#xff0c;美、中、欧、日、韩等主要经济体正通过顶层政策设计、算力基建投入、基础模型开源生态与人才战略…...

为什么90%的职场人低估了AGI的就业穿透力?——基于神经符号系统演进的5级替代模型分析

第一章&#xff1a;AGI与就业市场的未来变化 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能&#xff08;AGI&#xff09;的实质性突破正从理论推演加速迈向工程落地&#xff0c;其对就业结构的影响已不再是远期预测&#xff0c;而是正在发生的系统性重构。不同于…...

从零构建你自己的CoreOS风格系统:使用rpm-ostree compose tree打造不可变基础设施镜像

从零构建CoreOS风格不可变系统&#xff1a;rpm-ostree全栈实践指南 当你在凌晨三点被生产环境突发的依赖冲突惊醒时&#xff0c;当容器集群因底层系统库版本不一致而集体崩溃时&#xff0c;不可变基础设施的理念便开始显现其价值。不同于传统Linux发行版中包管理器随意修改运行…...

Rust的async闭包与高阶函数在异步编程中的组合使用方式

Rust的async闭包与高阶函数在异步编程中的巧妙组合&#xff0c;为开发者提供了强大的工具来构建高效且灵活的异步代码。异步编程在现代软件开发中越来越重要&#xff0c;尤其是在处理I/O密集型任务时。Rust通过async/await语法和闭包等特性&#xff0c;使得异步代码的编写更加直…...