前段时间刚做完Airplay的相关应用,现在就开发的一点经验和大家分享一下。

首先,说说Airplay吧,Airplay可以将iPhone,iPad或iPodtouch等设备上的视频、音频以及图片传输到第三方认证设备上,一般是在AppleTV或Air port设备上,但其实,现在很多第三方的android设备也可以支持Airplay了,像阿里云或小米的盒子都支持Airplay投影了,而且效果都还不错。

其实,Airplay算是苹果公司定义的一种协议,或是一种技术吧,所以,按照惯例,这项技术是不开源的,对外封闭。而Android端,可以使用一套的多屏互动方案的,叫做DLAN,即Digital Living Network Alliance,它的协议是公开的。在次,得感谢诸多技术大牛,破解了Airplay,包括音频投影服务中使用的RSA私钥,和一份具体的协议说明(http://nto.github.io/AirPlay.html)。

下面,就Airplay协议内容大概的说明一下,当然,大家直接看上述地址中的内容也许更清楚,本人能力有限,大概的说说我的部分理解。

1.使用multicastDNS协议来进行服务发现,在android端可以用JmDNS来实现。

一般我们会发布两个服务:AirTunes service(RAOP)和AirPlay Service,前者用于音频流的投影,后者用于图片和视频内容的投影。

2.协议内容(一):AirTunesService

2.1.协议中的音频流支持RTSP协议。

1)IOS设备向服务端发送的RTSP请求包括

ANNOUNCE:告诉RTSP服务器关于流的各种属性
SETUP:告诉RTSP服务器初始化一个record session,同时通知必要的传输信息。
RECORD:请求服务器开始流的传输 
FLUSH:请求停止传输
TEARDOWN:请求结束RTSP会话
PAUSE, OPTIONS,
GET_PARAMETER,
SET_PARAMETER:可用于音量控制,Metadata:其中包括音频曲名,歌手名,专辑名,封面图片,播放进度信息……
POST and GET

2)RTP流,用于传输音频数据等。(如果说,RTSP用于发起/终结流媒体,那么RTP则传输流媒体数据 )

这里音频包是几乎完全兼容RTP协议。RTP包按有效载荷的不同类型分为以下几种:

Audio packets:其有效载荷为经过加密的audio data

Sync packets:服务端每秒钟会收到一个同步包,来将RTP中的timestamps与用于始终同步的NTP time关联起来

Retransmit packets:对丢失的audio packets进行重传

Timing packets:用于音频的主时钟同步

2.2音频数据加密解密

Client:客户端首先会用RSA公钥,利用OAEP加密方式自动生成一个随机的128位AES key,然后和rsaaes key,aesiv一起发送给Server。

Sever:服务端利用指定的RSA私钥来解密AES key,然后将解密结果返回给Client。

Client:客户端利用RSA公钥要解密收到的数据,若解密结果和之前自动生成的随机数一致,则表明服务端解密成功。

其中,PEM-encodedPKCS#8格式的私钥为

/**    * The AirTunes private key in PEM-encoded PKCS#8 format.    * Original Key from shairport was in PEM-encoded PKCS#1 format  */ private static final String PrivateKeyData =       "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDn10TyouJ4i2wf/n" +       "VaCOtwVEqPp5RaqL5sYs5fUcvdTcaEL+PRCD3S7ewb/UJS3ALm85i98OYUjqhIVe/n" +      "LkQtptYmZPZ0ofMEkpreT2iT7y325xGox3oNkcnZgIIuUNEpIq/qQOqfDhTA92k4/n" +       "xfOIL8AyPdn+VRVfUbtZIcIBYp/XM1LV4u+qv5ugSNe4E6K2dn9sPM8etM5nPQN7/n" +     "DS6jDF//6wb40Ird5AlXGpxon+8QcohV3Yz7movvXIlD7ztfqhXd5pi+3fNZlgPr/n" +     "Pm9hNyu2KPZVn1maeL9QBoeqf0l2wFYtQSlW+JieGKY1W9gVl4JeD8h1ND7HghF2/n" +      "Jc2/mER7AgMBAAECggEBAOXwDHL1d9YEuaTOQSKqhLAXQ+yZWs/Mf0qyfAsYf5Bm/n" +      "W+NZ3xJZgY3u7XnTse+EXk3d2smhVTc7XicNjhMVABouUn1UzfkACldovJjURGs3/n" +     "u70Asp3YtTBiEzsqbnf07jJQViKQTacg+xwSwDmW2nE6BQYJjtvt7Pk20PqcvVkp/n" +      "q7Dto1eZUC+YlNy4/FaaiS0XeAMkorbDFm40ZwkTS4VAQbhncGtY/vKg25Ird2KL/n" +      "aOaWk8evQ78qc9C3Mjd6C6F7RPBR6b95hJ3LMzJXH9inCTPC1gvexHmTSj2spAu2/n" +       "8vN8Cp0HEG6tyLNpoD8vQciACY6K3UYkDaxozFNU82ECgYEA9+C/Wh5nGDGai2IJ/n" +      "wxcURARZ+XOFZhOxeuFQi7PmMW5rf0YtL31kQSuEt2vCPysMNWJFUnmyQ6n3MW+V/n" +     "gAezTGH3aOLUTtX/KycoF+wys+STkpIo+ueOd0yg9169adWSAnmPEW42DGQ4sy4b/n" +        "2LncHjIy8NMJGIg8xD743aIsNpECgYEA72//+ZTx5WRBqgA1/RmgyNbwI3jHBYDZ/n" +      "xIQgeR30B8WR+26/yjIsMIbdkB/S+uGuu2St9rt5/4BRvr0M2CCriYdABgGnsv6T/n" +     "kMrMmsq47Sv5HRhtj2lkPX7+D11W33V3otA16lQT/JjY8/kI2gWaN52kscw48V1W/n" +      "CoPMMXFTyEsCgYEA0OuvvEAluoGMdXAjNDhOj2lvgE16oOd2TlB7t9Pf78fWeMZo/n" +       "LT+tcTRBvurnJKCewJvcO8BwnJEz1Ins4qUa3QUxJ0kPkobRc8ikBU3CCldcfkwM/n" +      "mDT0od6HSRej5ADq+IUGLbXLfjQ2iecR91/ng9fhkZL9dpzVQr6kuQEH7NECgYB//n" +      "QBjcfeopLaUwQjhvMQWgd4rcbz3mkNordMUFWYPt9XRmGi/Xt96AU8zA4gjwyKxi/n" +       "b1l9PZnSzlGjezmuS36e8sB18L89g8rNMtqWkZLCiZI1glwH0c0yWaGQbNzUmcth/n" +       "PiLJTLHqlxkGYJ3xsPSLBj8XNyA0NpSZtf35cO9EDQKBgQCQTukg+UTvWq98lCCg/n" +      "D16bSAgsC4Tg+7XdoqImd9+3uEiNsr7mTJvdPKxm+jIOdvcc4q8icru9dsq5TghK/n" +        "DEHZsHcdxjNAwazPWonaAbQ3mG8mnPDCFuFeoUoDjNppKvDrbbAOeIArkyUgTS0g/n" +       "Aoo/jLE0aOgPZBiOEEa6G+RYpg==/n" +        "";

3.协议内容(二):AirPlay Service

/reverse:协商请求

/scrub: POST方式为seek请求, GET方式为获取播放位置

/volume: 设置音量:0.000000为静音,1.000000为最大

/play: 播放请求:携带播放链接,本地文件播放为http,网络文件播放为m3u8地址

/rate: 播放与暂停:0.000000为暂停,1.000000为播放

/stop: 停止播放

/photo: 推送图片:在HTTP的Body发送实际图片

/playback-info: 获取播放端的状态:总时长、缓冲时长、播放位置、播放器状态(LOADING、PLAYING、PAUSED、STOP)等信息

/server-info: 获取服务器信息:主要是mac地址信息

Airplay相关协议相关推荐

  1. 视频云、流媒体以及相关协议的理解

    一.视频云 1.视频云是什么? 视频云是基于云计算技术的理念,采用视频作为"云端"向"终端"呈现处理结果的一种云计算方案,包括云储存.云转码.云直播.云加密.云 ...

  2. Linux驱动学习--HDMI开发(一) 相关协议及传输原理的介绍

    目录 一.引言 二.HDMI硬件接口及相关协议 -------> TMDS(转换最小化差分信令) -------> CEC(消费电子控制) -------> DDC(显示数据通道) ...

  3. 发送和接收电子邮件时的相关协议以及流程

    一·相关协议 1.SMTP协议 SMTP 的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议.它是一组用于从源地址到目的地址传输邮件的规范, ...

  4. 2021年4月1日 深入理解网络层和传输层相关协议!!!

    深入理解网络层和传输层相关协议!!! ARP/ICMP/TCP和UDP协议!!! 关于ARP ARP协议概述 局域网中主机的通信 ·IP地址与MAC地址 什么是ARP协议 ·Address Resol ...

  5. 嵌入式 RTP协议详解以及其他相关协议

    RTP协议 1 RTP报文格式 2 基于RTP的带宽控制方法 1.接收端的控制策略 2.发送端的控制策略    RTP(Real-timeTransportProtocol)是由IETF开发的实时传输 ...

  6. IEEE 802.1 AVB 相关协议简介

    这周老师让我阅读2013年Rate会议上Wilfried Steiner 做的报告:"Deterministic Ethernet: Standardization in Progress ...

  7. 3GPP接口定义及相关协议一, 手机通信专有名词中英文对照

    1 3GPP接口定义及相关协议一览 Controlling Radio Network Controller (CRNC) A role an RNC can take with respect to ...

  8. BT HOST相关协议简介

    本文只针对蓝牙协议栈HOST层相关协议做简单介绍,后续针对每一块的内容会慢慢加进来 HCI(Host Controller Interface):主机控制接口 L2CAP(Logical Link C ...

  9. OSI开放系统互联参考模型及一些相关协议

    OSI开放系统互联参考模型及一些相关协议 1. OSI七层模型 1.1 基本概念 1.2 七层模型的划分 1.3 数据传输过程 2. TCP/IP四层模型 2.1 基本概念 2.2 四层模型的划分 2 ...

最新文章

  1. 比可微架构搜索DARTS快10倍,第四范式提出优化NAS算法
  2. “is”与“==”区别
  3. C#开发和使用中的23个技巧
  4. Flink SQL 1.11 新功能与最佳实践
  5. 数据库流行度11月排行榜:Oracle 意外滑落和 PostgreSQL 再创新高
  6. win7变成xp风格了怎么改回_让电脑提速的几种方法(老电脑太卡怎么提速)
  7. [转载] 的士速递4
  8. Zabbix学习(十七)zabbix low-level discover zabbix批量部署必备
  9. 学习笔记--STM32F205+LCD
  10. php页面劫持网站,网站被劫持了怎么修复
  11. 计算机科学刘培姣,高中物理课堂融入物理学史体现核心素养的必要性
  12. 产品分析————拼多多
  13. Spring Security 的 CSRF 的相关资料
  14. stlink v3驱动_STLINK-V3SET - STLINK-V3模块化在线调试器和编程器用于STM32/STM8 - STMicroelectronics...
  15. SqlServer表与表之间字段一对多sql语句写法
  16. Echarts省份地图展示
  17. 众包数据库管理、时空众包、移动群智感知方向的综述整理——附思维导图
  18. 基于JavaWeb的理发店管理系统
  19. RobotFramework 之 数据驱动
  20. PTA 神坛 (30 分)

热门文章

  1. ACM-ICPC 2018 焦作赛区网络预赛(A B E F G H I K L)
  2. 有关500强企业大数据
  3. 【ceph】CEPH源码解析:读写流程
  4. OpenCV + CPP 系列(卌一)图像特征匹配( FLANN 匹配)
  5. 服务器c盘怎么删除临时文件,Win10 C盘临时文件怎么删除?
  6. 华工《计算机应用基础 简答题》,华工《计算机应用基础》随堂练习
  7. 2013年最具技术影响力原创图书TOP10
  8. 读书笔记(七)--IoT Security
  9. 市场调研报告-全球与中国溶剂净化器市场现状及未来发展趋势
  10. 使用原生js仿写win10时钟