A2DP和AVRCP蓝牙音频传输协议
1.A2DP全名是Advenced Audio Distribution Profile蓝牙音频传输模型拹定。
  A2DP 规定了使用蓝牙非同步传输信道方式,传输高质量音乐文件数据的拹议堆栈软件和使用方法,基于该拹议就能通过以蓝牙方式传事输高品质的音乐了,
  例如可以利用立体声蓝牙耳机或蓝牙音响设备来收听音乐了。A2DP和AVRCP是一对兄弟,A2DP里WM设备是控制端,蓝牙耳机是接收端,AVRCP反之,这里说的就是WM如何接收蓝牙耳机发送的AVRCP并处理的过程。
 
2.AVRCP全名是Audio Video Remote Cortrol Profile音频/视频远程控制配置文件。
  AVRCP 设计用于提供控制 TV、Hi-fi 设备等的标准接口。此配置文件用于许可单个远程控制设备(或其它设备)控制所有用户可以接入的 A/V 设备。
  AVRCP 定义了如何控制流媒体的特征。包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。
  AVRCP(Audio/Video Remote Control Profile)是一种在蓝牙协议栈A2DP/AVCTP上实现的控制技术,通俗点说,就是你用蓝牙耳机听歌时按一下拨号键它会暂停,按下选曲它会切换,这就是AVRCP的功劳。
 
栗子:手机通过蓝牙连接音箱,播放手机上的音乐。
Audio Source:发送音频流 //手机端
Audio Sink:接收音频流   //音箱端

A2DP
AVCTP    Audio/Video Control Transport Protocol    音频/视频控制传输协议(通过L2CAP传输AV/C指令)    通过L2CAP通道由远程控制规范去发送AV/C指令

AVRCP
AVDTP    Audio/Video Distribution Transport Protocol    音频/视频分发传输协议(通过L2CAP向立体声耳机传输音乐文件)    通过L2CAP通道由高级音频分发规范将音乐传输到立体声耳机

Audio 音频

TCP/UDP 
PPP/BNEP 网络

SDP 服务发现协议   为实现蓝牙设备之间相互查询及访问对方提供的服务
TCS 电话控制

AT 指令集
OBEX 对象交换协议
RFCOMM 串口仿真

L2CAP 逻辑链路控制与适配协议

persist.bluetooth.btsnoopenable

一次完整的连接:connect Event
    设备发现过程: 
        Advertise: 从机处于广播状态
        Scan Request: 主机接收到广播后发送扫描请求到外设
        Scan Response: 从机接收请求后返回扫描响应到主机
    Establish Link Request:主机向从机发送一个链接请求
    
Pairing:配对过程,产生加密肯认证密钥
Bonding:绑定过程,主从机绑定后下次连接可以快速配对

蓝牙技术应用框架协议堆栈
    通用访问框架(GAP)
        服务发现框架(SDAP)
        扩展服务发现框架(ESDP)
        硬拷贝电缆替代框架(HCRP)
        个人局域网框架(PANP)
        电话控制协议规范框架(TCSP)
            无绳电话框架(CTP)
            对讲机框架(IntP)
        音频/视频遥控框架(AVRCP)    
        蓝牙音频视频控制传输协议(AVCTP)    
        通用音频/视频分发框架(GAVDP)
            高级音频分发框架(A2DP)
            视频分发框架(VDP)
        串口框架(SPP)
            拨号上网框架(DUNP)
            传真框架(FaxP)
            头戴式设备框架(HSP)
            局域网访问框架(LAP)
            免提框架(HFP)
            通用对象交换框架(GOEP)
                文件传输框架(FTP)
                对象推送框架(OPP)
                同步框架(SP)
                基本打印框架(BPP)
                基本成像框架(BIP)

A2DP 高级音频分发框架
        异步无连接链路(ACL)
        音频数据 -> 耳机或音箱
        点对点的音频分发
        AVCTP
        
        
09-03 21:01:02.187   503   787 W bt_btif : bta_av_str_closed: peer_addr=18:bb:26:e1:61:14 open_status=0 chnl=64 hndl=65 co_started=1
09-03 21:01:02.187   503   787 E bt_btif : bta_av_str_stopped: audio_open_cnt=1, p_data 0x0
09-03 21:01:02.187   503   787 W bt_btif : bta_dm_rm_cback:2, status:6
09-03 21:01:02.188   503   639 W bt_btif : btif_av_state_started_handler: event=BTA_AV_STOP_EVT flags=0x0
09-03 21:01:02.188   503   787 W bt_btif : bta_dm_rm_cback:2, status:1
09-03 21:01:02.188   503   639 W bt_btif : ## ON A2DP STOPPED ##
09-03 21:01:02.188   503   639 I BluetoothA2dpServiceJni: bta2dp_audio_state_callback
09-03 21:01:02.188   503   787 E bt_btif : bta_av_rc_create ACP handle exist for shdl:0
09-03 21:01:02.189   503   807 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_NONE, status 0 ##
09-03 21:01:02.189   503   808 W bt_btif : btif_a2dp_data_cb: BTIF MEDIA (A2DP-DATA) EVENT UIPC_CLOSE_EVT
09-03 21:01:02.189   503   807 E bt_btif : btif_a2dp_command_ack: warning : no command pending, ignore ack
09-03 21:01:02.189   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_NONE, status 0 ##
09-03 21:01:02.189   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.189   503   808 E bt_btif : btif_a2dp_command_ack: warning : no command pending, ignore ack
09-03 21:01:02.190   503   639 W bt_btif : ## ON A2DP STOPPED ##
09-03 21:01:02.190   503   806 D A2dpStateMachine: Connected process message: 101
09-03 21:01:02.191   503   639 I BluetoothA2dpServiceJni: bta2dp_connection_state_callback
09-03 21:01:02.191   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.191   503   639 D a2dp_codec: init
09-03 21:01:02.191   503   639 D a2dp_codec: createCodec: codec SBC
09-03 21:01:02.191   503   639 I a2dp_codec: init: updated SBC codec priority to 1001
09-03 21:01:02.192   503   639 D a2dp_codec: createCodec: codec AAC
09-03 21:01:02.192   503   639 I a2dp_codec: init: updated AAC codec priority to 2001
09-03 21:01:02.192   503   639 D a2dp_codec: createCodec: codec aptX
09-03 21:01:02.193   503   806 D A2dpStateMachine: A2DP Playing state : device: 18:BB:26:E1:61:14 State:10->11
09-03 21:01:02.193   503   806 D A2dpStateMachine: Connected process message: 101
09-03 21:01:02.195   503   639 D a2dp_codec: createCodec: codec aptX-HD
09-03 21:01:02.202   503   806 D A2dpStateMachine: Enter Disconnected: 101
09-03 21:01:02.204   503   503 D A2dpStateMachine: Connection state 18:BB:26:E1:61:14: 2->0
09-03 21:01:02.225   503   808 W bt_btif : btif_a2dp_ctrl_cb: A2DP-CTRL-CHANNEL EVENT UIPC_RX_DATA_READY_EVT
09-03 21:01:02.225   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START
09-03 21:01:02.225   503   808 W bt_btif : btif_av_stream_started_ready: sm_handle=-448876552 state=0 flags=0x0 ready=0
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: A2DP command A2DP_CTRL_CMD_START while AV stream is not ready
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_START, status 1 ##
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START DONE
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_ctrl_cb: A2DP-CTRL-CHANNEL EVENT UIPC_RX_DATA_READY_EVT
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START
09-03 21:01:02.248   503   808 W bt_btif : btif_av_stream_started_ready: sm_handle=-448876552 state=0 flags=0x0 ready=0
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: A2DP command A2DP_CTRL_CMD_START while AV stream is not ready
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_START, status 1 ##
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START DONE
09-03 21:01:02.248   503   639 D a2dp_codec: createCodec: codec LDAC
09-03 21:01:02.249   503   639 I a2dp_codec: init: updated LDAC codec priority to 5001
09-03 21:01:02.249   503   639 D a2dp_codec: createCodec: codec SBC SINK
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec LDAC
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec AAC
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec SBC
09-03 21:01:02.251   503   639 I a2dp_codec: init: initialized Sink codec SBC(Sink)
09-03 21:01:02.253   503   639 W bt_btif : ## ON A2DP IDLE ## peer_sep = 1
09-03 21:01:02.254   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.254   503   639 I BluetoothA2dpServiceJni: bta2dp_audio_config_callback

A2DP和AVRCP 播放音视频相关推荐

  1. 在Chrome78浏览器上如何实现自动播放音视频

    在Chrome78浏览器上如何实现自动播放音视频 问题:video与audio标签里设置了autoplay="autoplay",在Chrome78浏览器上无法实现自动播放. 1. ...

  2. C# 使用SDL2实现Mp4文件播放音视频

    播放音视频的关键:视频的格式是H264,音频的格式是AAC.使用ffmpeg探测流的方式来实现音视频流的解码播放. 数据处理逻辑:H264->YUV     AAC->PCM. SDL2工 ...

  3. C# 使用SDL2实现Mp4文件播放音视频操作

    播放音视频的关键:视频的格式是H264,音频的格式是AAC.使用ffmpeg探测流的方式来实现音视频流的解码播放. 数据处理逻辑:H264->YUV AAC->PCM. SDL2工具类 u ...

  4. Android 是否正在播放音视频

    Android 是否正在播放音视频 import android.media.AudioManager; AudioManager audioManager =(AudioManager)getApp ...

  5. 【iOS】AVPlayer 播放音视频

    1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...

  6. QT+FFmpeg播放音视频,且支持音视频同步。

    大概框架: 线程1:ffmpeg视频解码. 线程2:ffmpeg音频解码. 线程3:播放每一帧音频,使用QAudioOutput配合QIODevice来实现. 主线程:绘制每一帧图片,使用QOpenG ...

  7. AVFoundation播放音视频(五)

    前言 从本文开始逐渐学习iOS自带的多媒体处理框架,例如AVFoundation,VideoToolbox,CoreMedia,CoreVideo实现多媒体的处理,并且将实现方式以及效果和ffmpeg ...

  8. iOS】AVPlayer 播放音视频

    1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...

  9. 视频播放器是如何播放音视频的?

    当我们用手机或者电脑打开一个电影视频或者一首音频歌曲的时候,不论是在线流量还是离线本地播放,通常设备上的音视频播放器都可以将音视频文件中的画面和声音给到我们的视觉和听觉器官,这是我们习以为常的东西.但 ...

最新文章

  1. Akka 接收消息超时的处理_Receive Timeout
  2. Android WebView使用
  3. 全球与中国重型离合器市场运营状况分析与“十四五”发展规划建议2021年版
  4. silverlight for olap version milestone 07 updated!
  5. BZOJ 3697: 采药人的路径 [点分治] [我想上化学课]
  6. Python__getattr__、__setattr__、__delattr__、__getitem__、__setitem__、__getattribute__方法的理解
  7. 国产APP自动化测试工具AndroidRobot下载地址
  8. 讲讲亿级PV的负载均衡架构
  9. 金额转换成人民币大写
  10. win7系统关闭445端口
  11. VUE小需求——旋转小图标
  12. 评论采集-评论采集器-评论采集插件-评论采集工具免费下载
  13. 机器学习----矩估计方法
  14. exsi rh2288hv5 驱动_华为服务器RH2288H V3 引导ServiceCD安装Windows系统方
  15. 自动驾驶仿真测试标准ASAM OpenX简介
  16. 设置浏览器保护色(chrome)
  17. 【笔记】reko 0.10.2 反编译工具安装和使用记录|(2) 翻译 user‘s guide
  18. 图像保边滤波算法集锦--非局部均值NLM滤波器
  19. 脉冲噪声及其消除算法(DPC)
  20. TPS、QPS和系统吞吐量的区别和理解

热门文章

  1. 为物联网而生:NB-IOT开启广袤市场空间
  2. mysql back blog_mysql qpress压缩备份恢复
  3. UserWarning: h5py is running against HDF5 1.10.5 when it was built against 1.10.4(解决方案))
  4. CSS text-align:justify作用
  5. HEDD:增强子疾病相关数据库
  6. 云运维管家服务器,行云管家云管平台私有部署标准版安装与体验
  7. 许家印的中秋行程单,恒大造车的“全球化”
  8. 华为手机使用应用沙盒动态修改cpu数据
  9. nginx入门基础(内附教学视频)
  10. iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射