android DLNA UPnp技术

来源:互联网 发布:hash-256函数算法原理 编辑:程序博客网 时间:2024/05/30 02:24

    项目涉及到android设备的屏幕投射,在网络上面初步了解后,知道了DLNA以及相关技术,这里来一段百科的解读:DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟), 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达280多家。

    不过看到后面有一句:DLNA 宣布组织在2017年1月15日正式解散,未来不会再更新DLAN标准~

    (参考:百度百科)

    DLNA有四个功能模块(其实是三个):

DMS DMR DMC DMP
DMS:Digital Media Server 服务器
DMR:Digital Media Renderer 渲染器(受控端)
DMC:Digital Media Controller 控制器
DMP:Digital MediaPlayer 播放器(可理解为DMC+DMR)
    用一句话来表述即:DMP(DMPC+DMR)在DMS上面发现媒体/文件等内容通过媒体应用的播放,两个设备之间的通信通过Upnp协议实现。Upnp框架开源的,于是在github上面随便一搜,果然很多项目基于此来实现,还没来得及细看,这里随便贴上几个:

https://github.com/KernelCrap/android-dlna

https://github.com/offbye/DroidDLNA


    这里引用知乎上面的一个回答,更加的清晰:


(1) NetWorking Connectivity 网络互联方式:包括物理连接的标准,有有线的,比如符合IEEE802.3标准的Ethernet,;有无线

的 ,比如符合IEEE802.11a/g标准的WiFi,能做到54Mbps,蓝牙(802.15)等,技术都很成熟。现在OFDM和MIMO(802.11n)已经能做到300Mbps了,早就超过比较普及的100Mbps的Ethernet了,只不过产品还没有普及,以后肯定会用到。

 

(2) NetWorking Stack 网络协议栈:DLNA的互联传输基本上是在IPV4协议簇的基础上的。用TCP或者UDP来传都可以。这一层相当于OSI网络层。

 

(3)Device Discovery&Control 设备发现和控制。

         这个层次是比较essential的,是DLNA的基础协议框架。DLNA用UPnP协议来实现设备的发现和控制。下面重点看一下UPnP。

         这一部分可以看一下http://upnp.org/sdcps-and-certification/standards/device-architecture-documents/里的文档。UPnP的工作过程 一文也做了详细说明。下面概括总结性地说一说。

         UPnP,英文是Universal Plug and play,翻译过来就是通用即插即用。UPnP最开始Apple和Microsoft在搞,后来Apple不做了,Microsoft还在继续做,Intel也加进来做,Sony,Moto等等也有加入。UPnP有个网站http://www.upnp.org/,我们发现DLNA的网页和UPnP的网页很像,颜色也差不多,就可以知道他们关系很好了。DNLA主要是在推UPnP。

 微软官方网站对UPnP的解释:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

        举个例子。我们在自己的PC(win7)里面打开网络服务的UPnP选项,然后再家庭网络中共享一个装着视频的文件夹,然后买一台SmartTV回来打开就可以找到这台PC的共享文件夹,然后就直接在电视上选文件播放了。

        UPnP的另外一个作用是给家庭网内的devices做自动的网络地址转换NAT(NAT,Network Address Translation)和端口映射(Port Mapping),因为家庭网络里面没有那么多IP,所有的devices可能都要通过同一个ip出去。转换映射之后,家庭网络内外的devices就可以通过internet自由地相互连接,而不受内网地址不可访问的阻碍。

UPnP Device Architecture 1.0中会说明设备是怎样通过UPnP来相互发现和控制,以及传递消息的。我们会专门用一章的篇幅来讲一下UPnP Device Architecture,可见下文中的扩展阅读I: UPnP的工作过程

 

(4)Media Management媒体管理。媒体管理包括媒体的识别、管理、分发和记录(保存),UPnP AV Architecture:1 and UPnP Printer Architecture:1这两个属于UPnP的文档会说明如何进行媒体管理。


UPnP属于DLNA分层架构中的第三层(Device Discovery&Control),它属于DLNA的基础协议框架,DLNA用UPnP协议来实现设备的发现和控制。 

    以下是一个摘抄过来的实际应用场景:  

    你下了班回到家,掏出手机拨到家庭模式,然后就在手机上遥控打开了等离子电视和PC,然后把订阅的新闻通过PC下载完成后打到等离子电视上播放。这时手机就是一个DMC/M-DMC,等离子电视是一个DMR,PC就是DMS。然后你手机上收到一张朋友从巴西传来的照片,你看完之后把它同步到PC上存储起来,这样手机现在的身份是M-DMU,然后你把这张图片放到电子相框里面。这个电子相框就是一个M-DMD,相框也有play的能力,所以他又是一个M-DMP。所以说这些设备的功能角色都是不定的,界限也不是那么严格。在DLNA Guidelines v1.0的时候还没有智能手机,后来在v1.5加入了。这个设备分类只是定义了功能,而且功能也会变的。以后还会出其它新设备,像pad,tab,touch各种各样,到时候标准也会变的。