Android技术知识Android开发Android开发经验谈

Android车载应用开发——DLNA开发浅析

2022-12-02  本文已影响0人  谁动了我的代码

DNLA的建立

DLNA 成立于2003 年6 月24 日, 其前身是DHWG (Digital Home Working Group 数字家庭工作组),由Sony、Intel、Microsoft等发起成立、旨在解决个人PC ,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能。DLNA的口号是Enjoy your music, photos and videos, anywhere anytime。该组织的官方网站是http://www.dlna.org . 页面主色调green,black,white,silver和gray,后面要讲到的UPnP的主业也是同样的调调,这两个关系挺大的,后面讲。

DLNA的设备

在讲DLNA的架构之前先讲一下DLNA规定的设备分类,这些设备就是DLNA标准执行的物理和逻辑对象。


这是一个DLNA 设备的类图。

1.Home NetWork Device(HND)。这类设备指家庭设备,具有比较大的尺寸及较全面的功能,主要与移动设备区别开来,下属5类设备:

2.Mobile Handheld Devices(MHD)手持设备。相比家庭设备,手持设备的功能相对简化一些,支持的媒体格式也会不同。

3.Networked Infrastructure Devices (NID) 联网支持设备。

DLNA的架构

DLNA架构是个互联系统,因此在逻辑上它也类似OSI(Open System Interconnection,开放系统互连)七层网络模型。

DLNA架构分为如下图7个层次:

DLNA ARCHITECTURE

(4)Media Management媒体管理。媒体管理包括媒体的识别、管理、分发和记录(保存),UPnP AV Architecture:1 and UPnP Printer Architecture:1这两个属于UPnP的文档会说明如何进行媒体管理。我将在 扩展阅读II:UPnP AV Architecture 一文中稍微详细介绍UPnP AV设备和CP之间的交互模型及媒体的控制。

UPnP AV Architecture 定义了UPnP AV设备间媒体传送以及和CP间的交互。UPnP AV也定义了两种UPnP AV设备:UPnP AV MediaServer(MS)和UPnP AV MediaRender(MR),以及他们具有的4种服务:

UPnP Printer Architecture:1 定义了打印设备和CP的交互模型,这将不再细说。

exsample:我们输入一个网址,回车,给server发一个request,用TCP我们就可以等server给我们消息,说明server收到我们的消息了,否则我们就重发;接着server给我们TCP包,我们收一个就给server回信说我们收到了,要是server收不到回信,他就认为包丢掉了,会再传一个同样的包过来。不停地回信就是会比较慢。

那如果我们用UDP会怎样?就是说我们不给server回信说我们收到编号是x的包了,server也就不给我们重发丢掉的包了,这样我们就丢包了。

但是我们传stream的时候,比如视频流,不用存,看完就完了,这种时候就可以用UDP来传。加上局域网里面QoS本来就很高,丢包都是不太可能的。所以UDP肯定会用。局域网多播的时候也用UDP,这个在后面讲。

媒体的传输方案如下:

媒体传输 模式有三种:

1)流传输。当DMR/DMP需要实时渲染接收媒体,媒体具时序性。

2)交互传输。不包含时序的媒体,如图片传输。

3)后台传输。非实时的媒体传输,比如上传下载等。

我们知道不同设备对编码格式的支持能力不同,Media Formats这一部分规定了设备应该具有的格式支持能力。下面的表是DLNA支持的所有编码格式:

DLNA-proved format

Video Audio Images
MPEG-1MPEG-2H.263MPEG-4 Part 2MPEG-4 Part 10WMV9VC-1 LPCMMPEG-1/2 L2MPEG-1/2 L3MPEG-4 AAC LCMPEG-4 AAC LTPMPEG-4 HE AACMPEH-4 BSAC AC-3ATRAC3plusWMAWMA ProfessionalAMRAMR-WB+G.726 JPEGPNGGIFTIFF

针对家庭设备和手持设备,DLNA有不同的格式规定:

在详细介绍Cling开源库的使用之前,我们还是先来介绍下DLNA的相关知识和一些比较有用的相关资料,正所谓磨刀不误砍柴工吗!

1.DLNA(DIGITAL LIVING NETWORK ALLIANCE,数字家庭网络联盟)

DLNA不是创造技术,是一种组合的解决方案:利用现今比较成熟的各种相关技术,组合形成一个致力于构建家庭媒体共享的解决方案。

1)DLNA中几种主要的家庭网络设备类型:

DMS(数字媒体服务器)

DMP(数字媒体播放器)

DMC(数字媒体控制器)

DMR(数字媒体渲染器)

2)DLNA几个重要功能组件

网络互联(有线,无线)

网络协议(IPV4/IPV6)

媒体传输(HTTP)

设备的发现、控制和媒体管理(UPNP):定义各个设备对媒体操作的功能,下面是其框架图

2.UPNP(Univer sal Plug and Play,通用即插即用)

用于各种设备之间的互联,具有良好的通用性,不需要专门的设备驱动层,并且可以在任何的系统上实现

1)UPNP基本组件

服务、设备和控制点是UPnP网络的基本组件。其组件图如下:


服务(Service)

在UPNP网络中,最新的控制控制单元就是服务,服务描述的设备在不同的情况下的活动和设备的状态。例如,时钟服务可以表述为时间变化(状态变化),当前的时间(时间状态)以及设置时间和读取时间两个活动,通过这两个活动,你就可以控制服务

设备(Device)

UPnP网络中定义的设备具有很广泛的含义,各种各样的家电、电脑外设、智能设备、无线设备、个人电脑等等都可以成为其中一员。一个UPnP设备可以是多个服务的载体和多个子设备的嵌套集。例如一台印表机有提供列印这样的服务;一台电视有提供收讯的服务,这些都属于设备。

控制点(ControlPoint)

在UPnP网络中,控制点指的是可以发现并控制其它设备的控制设备。在UPnP网络中,设备可以和控制点合并。也就是说,同一个设备,可以同时具有设备的功能和控制点的功能,即可以作为设备提供服务,也可以作为控制点发现和控制其它设备。

3.UPNP设备协议栈

UPnP定义了设备之间、设备和控制点、控制点之间通讯的协议。完整的UPnP由设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述界面几部分构成。UPnP设备协议栈如下图所示:


UPnP协议结构最底层的TCP/IP协议是UPnP协议结构的基础。IP层用于数据的发送与接收。对于需要可靠传送的信息,使用TCP进行传送, 反之则使用UDP。UPnP对网络物理设备没有要求,可以使用以太网、无线网、IEEE1394、红外进行连接, 只要支持IP协议即可。同时UPnP还可以使用TCP/IP协议族中的其他协议, 如ARP、IGMP、DHCP、DNS等。

构建在TCP/IP协议之上的是HTTP协议及其变种,这一部分是UPnP协议的核心部分, 所有UPnP消息都被封装在HTTP协议及其变种之中。HTTP协议的变种是HTTPU和HTTPMU, 这些协议的格式沿袭了HTTP协议,只不过与HTTP协议不同的是它们通过UDP而不是TCP来发送消息,并且可以用于多播通信。

下面分别介绍几种协议:

1)SSDP协议

简单服务发现协议(Simple Service Discovery Protocol:SSDP),内建在HTTPU/HTTPMU 里,定义如何让网络上有的服务被发现的协议。包括控制点如何发现网络上有哪些服务,并取得这些服务的资讯,还有装置本身宣告他提供哪些服务。该协议运用在UPnP工作流程的设备发现部分。

2)SOAP协议

简单对象访问协议( Simple Object Access Protocol) 定义了可扩展标记语言(XML ) 和HTTP 的使用来执行远程调用,包括控制点如何发送命令消息给设备,及设备接收到命令消息后如何发送响应消息给控制点。该协议运用在UPnP工作流程的设备控制部分。

3)GENA协议

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

4.DLNA开发

目前来说在android中用到的UPNP框架基本为cyberlink框架和cling框架。开心视频和快手看片用的是基于cling框架的dlna开发,而腾讯视频和搜狐视频用的就是基于cyberlink的dlna开发。所以我们也采用了cyberlink这个框架。cyberlink框架效率稍微低而且有几个致命的Bug,但是比较稳定

UPNP协议的几个重要服务: AVTransport:传输服务,提供媒体文件传输,播放控制等功能。

ContentDirectory:内容目录,用于提供媒体文件浏览,检索,获取媒体文件信息等功能。

ConnectionManager:连接管理,用于提供连接方面的管理,例如获取源/目的双方支持的MIME格式信息。

RendringControl:渲染控制,用于播放时的一些渲染控制,如调节音量,调节亮度等。厂商也可自定义服务


以上是有关车载技术中的DLNA开发,简单的浅析。有关更多的Android车载应用技术,大家可以参考《车载技术手册》学习里面的核心技术点。里面内容在大部分网上找不到的,且学且珍惜!

文末

DLNA只是一种分享。举个简单的例子,比如在家里,你手机里有一部电影,但是手机没电了,或者你想通过电视浏览手机里的图片。此时,您的电视和电脑等所有智能设备都可以在手机中即时共享电影。这条路叫DLNA。它最大的特点是不需要传输,不需要云存储,可以多台设备共享。嗯,是不是很有趣?下面给大家演示一下如何使用手机、平板等安卓系统与网络机顶盒进行交互,将照片、音乐、视频节目推送到电视上!(如果其他机顶盒有DLNA功能,原理是一样的。)

上一篇 下一篇

猜你喜欢

热点阅读