UPNP

UPNP: Universal Plug and Play

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

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

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

特点:

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

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

3. 设备可以动态地进入网络中,随后获得IP地址,“学习” 或查找自己应当进行的操作和服务的信息;“感知”别的设备是否存在以及它们的作用和当前的状态 。所有这些,都应当是可自动完成的。

4. 每个设备都可读取属于自己的、特定的状态和参数;完成控制操作后应当发出“操作完成”的响应信号。如果失败,则应发出控制失败的信号。

UPnP最大的愿景是希望任何设备一旦连接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相通信,更能直接使用或者控制它,一切都不需要人工设置,完全的即插即用。

 

 

基本协议: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实现的工作流程

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

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

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

4、 控制点发出动作信息给设备;

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

 

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

 

转载于:https://my.oschina.net/u/592116/blog/1553913

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值