UPNP

UPNP: Universal Plug and Playhtml

UPnP 是一种分布式的,开放的网络架构。UPnP 是独立的媒介。在任何操做系统中,利用任何编程语言均可以使用 UPnP 设备。UPnP规范基于TCP/IP协议和针对设备彼此间通信而制订的新的Internet协议。、编程

在 UPnP 架构中没有设备驱动程序,取而代之的是普通协议。一个 UPnP 设备可以自动跟一个网络链接上、并自动得到一个 IP 地址、传送出本身的权能并获悉其它已经链接上的设备及其权能。最后,此设备能自动顺利地切断网络链接,而且不会引发意想不到的问题。服务器

大多数无线路由器的UPnP默认为关闭,用户可手动开启该功能,重启路由器后便可生效。网络

特色:架构

1. 以网络为应用环境,不考虑“孤岛”中的计算机。编程语言

2. 以TCP/IP和整个Internet为基础。这样是“中立”的,不依附于任何操做系统或应用程序,不使用特定的API函数,不受程序设计语言的局限。能够无缝地接入传统网络。分布式

3. 设备能够动态地进入网络中,随后得到IP地址,“学习” 或查找本身应当进行的操做和服务的信息;“感知”别的设备是否存在以及它们的做用和当前的状态 。全部这些,都应当是可自动完成的。函数

4. 每一个设备均可读取属于本身的、特定的状态和参数;完成控制操做后应当发出“操做完成”的响应信号。若是失败,则应发出控制失败的信号。学习

UPnP最大的愿景是但愿任何设备一旦链接上网络,全部在网络上的设备立刻就能知道有新设备加入,这些设备彼此之间能互相通讯,更能直接使用或者控制它,一切都不须要人工设置,彻底的即插即用。spa

 

 

基本协议:UPnP所定义的基本协议(如SSDP、GENA、SOAP等)

HTTPU: 基于HTTP

HTTPMU: Multicast UDP

 

UPnP的基本组件

设备 服务 控制点

UPnP协议栈

2.3.1     SSDP协议

简单服务发现协议(Simple Service Discovery Protocol:SSDP),是内建在HTTPU/HTTPMU里,定义如何让网络上有的服务被发现的协议。具体包括控制点如何发现网络上有哪些服务,以及这些服务的资讯,还有控制点自己宣告他提供哪些服务。该协议运用在UPnP工做流程的设备发现部分。

2.3.2     SOAP协议

简单对象访问协议(Simple Object Access Protocol:SOAP)定义如何使用XML与HTTP来执行远程过程调用(Remote Procedure Call)。包括控制点如何发送命令消息给设备,设备收到命令消息后如何发送响应消息给控制点。该协议运用在UPnP工做流程的设备控制部分。

2.3.3     GENA协议

通用事件通知架构(Generic Event Notification Architecture:GENA)定义在控制点想要监听设备的某个服务状态变量的情况时,控制点如何传送订阅信息并如何接收这些信息,该协议运用在UPnP工做流程的事件订阅部分。

 

UPnP实现的工做流程

一、 首先控制点和设备都先获取IP地址后才能进行下一步的工做;

二、 控制点首先要寻找整个网络上的UPnP设备,同时网络上的设备也要宣告自身的存在;

三、 控制点要取得设备的描述,包括这些设备提供什么样的服务;

四、 控制点发出动做信息给设备;

五、 控制点监听设备的状态,当状态改变时做出相应的处理动做;

 

3.1      寻址(Addressing)

获取IP 地址。

3.2      发现(Discovery)

设备发现是由简单发现协议SSDP来完成的。

1)添加新的设备时:发现过程容许设备向网络上的控制节点告知它提供的服务 (advertise)

2)添加一个控制点时:发现过程容许控制点寻找网络上感兴趣的设备。 search & responce

 

3.3      描述(Description)

在控制点发现一台设备后,控制点对该设备可能仅仅知道设备或者服务的UPnP类型,设备的UUID和设备描述的URL地址,还须要知道更多的信息。控制点能够从发现消息中获得设备描述的URL,经过URL取回设备描述的信息。

设备描述 & 服务描述。

 

4, DLNA 原理交互过程

交互过程:
媒体播放器和媒体服务器之间基于http(标配)或rtsp(可选)进行媒体文件传输,控制点不参与媒体传输过程,控制点主要是来协调媒体服务器和媒体播放器之间的互操做功能的,好比选择二者都支持的传输协议和媒体格式,一般会有个UI界面来操做各自提供的接口(UPnP Action),好比手机,遥控器等,下面描述控制点播放视频的交互过程。
1. 发现DLNA网络中的音视频设备(媒体服务器和媒体播放器):控制点会自动经过UPnP的发现机制来检测到网络中的媒体服务器和媒体呈现器,一种经过手机以组播的形式发送UPnP M-SEARCH命令来查找设备,另外是网络中的音视频设备会间隔地发送ssdp:alive消息告诉控制点其设备信息和其提供的服务。
2. 查找、浏览网络中媒体服务器的视频:调用媒体服务器提供的内容目录服务接口ContentDirectory::Search()或Browser(),媒体服务器会以didl-lite规范返回目录及文件信息,其中包括支持的传输协议和格式
3. 获取媒体播放器的协议信息:控制点调用媒体播放器链接管理服务的接口ConnectionManager::GetProtocolInfo()来获取传输协议和支持的数据格式列表。
4. 匹配传输协议和数据格式:控制点在第2步从媒体服务器获取到的视频格式和支持的传输协议,在第3步一样获取到媒体播放器支持的传输协议和媒体数据格式,经过比较选择二者都支持的协议和数据格式。
5. 配置媒体服务器和媒体播放器:DLNA中媒体服务器和媒体播放器必须都支持链接管理服务,控制点经过调用ConnectionManger::PrepareForConnection()接口来作预配置处理并返回传输服务(AVTransport)的实例Id,以方便多个控制点操做状态的管理
6. 选取要播放的视频:控制点根据第2步中返回的视频列表中选择要播放的视频,调用音视频传输服务AVTransport::SetAVTransportURI()接口来告诉媒体播放器资源存储地址。
7. 开始视频传输:控制点调用媒体播放器的音视频传输服务AVTransport:play() /stop()接口进行控制操做,这个时候实际就是媒体播放器从媒体服务器上下载视频播放,控制点不参与视频数据的传输过程。
8. 视频显示控制:控制点调用媒体播放器的呈现控制服务RendringControl的接口来调整显示效果,如控制亮度,对比度,声音大小等。
9. 重复选择下一个视频:控制点经过调用AVTransport::SetAVTransportURI() 或者AVTransport::SetNextAVTransportURI()接口来重复上面的过程播放下一个视频。
10. 播放结束:当控制点不想再播放视频时,就能够调用链接管理服务ConnectionManager::ConnectionComplete()接口来结束媒体服务器和媒体播放器。

 

 

参考资料:

http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Five/Home/Catalog/201206/747039_97665_0.htm

DLNA 相关:内容比较赞

http://www.codekk.com/open-source-project-analysis/detail/Android/kevinshine/Cling%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90

DLNA交互流程:

http://blog.sina.com.cn/s/blog_6dce99b10101jt8f.html

相关文章
相关标签/搜索