解决什么问题
- 如何将客户端保存的网络视频地址告诉智能电视盒子
- 合理实现基本播放控制
- 暂不讨论离线流媒体的传输控制
DLNA是什么
- Digital Living Network Alliance
- 微软(Miracast)、苹果(AirPlay)、三星、索尼
- UPnP SSDP XML SOAP HTTP UDP TCP/IP
UPnP协议
- 不依赖任何驱动、操作系统、API的传输控制协议
- 基于TCP/IP, HTTP
- 大部分路由器和智能家电都支持
- 存在安全漏洞(局域网内,https支持不好)
DLNA/UPnP的逻辑架构
- 设备(Device):扮演渲染/播放角色的设备
- 服务(Service):提供播控服务
- 控制点(Control Point, CP):发出播控指令
1. 寻址
- 设备加入网络后确定自身IP
- DHCP
2.SSDP
- 基于HTTP(HTTPU、HTTPMU)
- 两种工作方式:
1.主动通知(Notify)
2.搜索-响应(HTTP扩展协议:M-SEARCH)
1.)多播搜索消息、单播搜索消息
3. 获取设备的“登记信息”
- UUID
- 是否可进行播放
- 设备的“名片”(设备描述文档)
SSDP搜索消息格式(UDP)
SSDP响应消息格式
4. 获取设备的“名片”
- 设备描述文档, Device Description Document, DDD
- 描述提供何种服务和能力
- 基于TCP的HTTP请求
请求DDD响应消息格式
一个服务的定义格式
5. 获取设备的服务描述文档
- Service Description Document, SDD
- 接口文档
- 描述该设备的该服务的使用方法
拼接请求SDD的完整地址
SDD的响应消息格式
6. 请求服务
- POST请求
- 拼接基于SOAP格式的消息体
- 根据SDD定义传入相应服务的名字和参数
拼接服务动作请求消息格式(POST)
服务动作请求响应消息格式
全套流程
客户端DLNA库模型设计
安全
- 明文传输
- 无法预防投屏地址被抓取
- 无法使用HTTPS等安全传输协议,除非能和需要适配的DLNA设备厂商进行合作协商。
- 在无法干预DLNA设备的前提下,可使用token过期/服务端次数限定等方案。
END