DLNA 架构在机顶盒上播放云存储文件的实现

 

摘要: 随着越来越多的数码设备,音像设备等对 UPNP 协议的支持和普及,业界对多媒体内容提供服务的需求越越来越强烈,为了实现遵循 UPNP 协议和 DLNA 架构来对多媒体内容提供服务,多媒体服务器 DMS 就成了唯一能够担当该需求的设备。本文着重介绍如何基于 DLNA 架构,来实现云端媒体文件在机顶盒上的播放。

关键词: DLNA , UPNP , DMS ,云存储, fuse

、 DLNA 简介

数字生活网路联盟 Digital Living Network Alliance (DLNA) 是一个由消费量类电子、行动电话,以及电脑厂商组成的联盟组织。该组织的目标在于建立一套可以使得各厂商的产品互相连接,互相适应的工业标准,从而为消费者实现数字化生活。目前联盟的成员包括飞利浦,三星,松下,惠普,索尼,微软,英特尔和诺基亚在内的众多业界领袖。

、 DMS 简介

Digital Media Server ( DMS )数字媒体服务器,提供了媒体档案的获取、录制、储存以及作为源头的能力。当然,有需要的话,多媒体档案的版权保护机制也可以被包含在内。 DMS 将会提供多媒体档案伺服的能力,提供诸如多种数字媒体播放装置的直接获取内容以及播放能力。这类型的装置包含了机顶盒、录放影机、具有多媒体伺服器功能的个人电脑、内含硬碟的家庭剧院、广播接收器、影像撷取装置等嵌入式设备。

、 UPNP 简介

UPnP 全名是 Universal Plug and Play ,主要是微软在推行的一个标准。简单的来说, UPnP 最大的愿景就是希望任何设备 ( 注意,是 ” 任何设备 ” ,像是电视,电脑,音响,冰箱,闹钟,电灯 ….等 ) 只要一接上网络,所有在网络上的设备马上就能知道有“新设备加入”,这些设备彼此之间能互相沟通,更能直接使用或控制它,一切都不需要设定,完全的 Plug and Play 。举个例子来说: 以前如果家中买了一台打印机,当你想要让这台打印机在家中的电脑都能用的时候,你需要先安装打印机,然后需要设定打印机共享,然后在去其他台电脑安装这台网络共享打印机,是不是很麻烦?如果你有 10 台电脑,想想看每台都要去设定的话,是不是很恐怖呢。现在,有了 UPnP 后,只要你家的电脑跟打印机都支援 UPnP ,当你一将新买的打印机接上去的时候,所有在网路上的电脑都会发现有一台打印机可用,一切的设定都不需要,马上就能直接用了,完全 Plug and Play !听起来是不是很棒,这就是 UPnP 希望打造的环境,让一切简化,提升我们的生活品质,因此 UPnP 主要的诉求是打造“家庭网路 (Home Network) ”的设定自动化。

、云存储简介

云存储是在云计算 (cloud computing) 概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。 当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。

、DLNA 的数据传输机制

  DLNA 标准是基于原有网络架构上的中界层,主要是能让支持此层定义的设备可以相互沟通,而不需另外做其他的设定动作,以1.0 版的DLNA 标准来说,就支持了Ethernet(IEEE803.3u) 与Wi-Fi(802.11 a/b/g) ,作为DLNA标准设备,网络的支持算是必备的。

  至于在各设备之间的相互侦测,则是采用UPnP 标准。DMP 设备通过UPNP 机制来搜寻网络上可相互匹配的DMS 装置,成功连接之后便可以进行后续的播放或传输动作。这个动作是全自动的,因此使用者无须进行任何干涉。而在媒体内容的发现方面,也同样是采用UPnP 机制。而在传输上,目前仍仅止于支持HTTP 标准协议,随后的版本才会将RTP(Real-time Transport Protocol) 传输协议加入。

  而在可传输的多媒体格式上,则分为必备支持以及可自选支持两方面,在必备支持方面,图形档案格式为JPG、音效格式为LPCM ,影片格式为 MPEG-2 。而在可选择格式方面,图形档案为PNG 、GIF 与TIFF ,音效压缩格式则是AAC 、AC-3 、ATRAC3Plus 、MP3 、WMA9 等等,至于在影片压缩格式上,则是包含了MPEG-1、MPEG-4 、AVC 以及WMV9 等等,由于目前网络传输速度还有待突破,因此厂商大多也偏向于支持 高压缩比的压缩格式。

  至于在产品测试认证上,DLNA 提供了标准的规范,以及可供厂商自行测试的软件工具,初步确认过可以正常执行以后,再送往DLNA 认证机构进行认证,认证之后便可获颁DLNA 标章。

  DLNA 的远景相当被看好,目前用于解决设备沟通的方式也相当合宜,只是目前DLNA 在标准规范方面还有些许不足,比如说在多媒体档案的数字版权保护机制上仍相当缺乏,而DLNA 网络也缺乏安全防护能力,也容易让骇客或病毒、木马等入侵,造成整个DLNA 环境的隐忧。加上网络架构对于即 时影音播放方面的能力还有待加强,即使加入了QoS 机制,但是在总体频宽未有突破之前( 比如说新的802.11n 标准通过) ,同时进行多方的高画质影音播 放,仍是相当难以达成的。

、 DLNA 必须具备的功能

6.1 播放多媒体文件

6.2 把多媒体资料上传到服务器

6.3 把多媒体资料从服务器复制到当前设备

6.4 把当前设备上的媒体资源共享给其他设备

、 DLNA 与云存储系统的嫁接

DLNA 架构设计的目标是在同一个局域网中实现设备的即插即用和共享,目前的传输协议为 Wi-Fi(802.11 a/b/g) ,基于 HTTP 进行传输,还不支持 RTP 。而云存储系统是基于互联网的,要让互联网上的文件可以通过 DLNA 在本地进行发现和播放,需要相应的技术实现,本文通过 fuse 把云端的文件映射为本地系统文件。 DMS 通过扫描映射过来的本地系统文件来发现云端的文件,然后才能共享出来被其他设备发现。其播放过程也是与本地文件播放机制一致。 DMS 不知道其扫描的目录文件是在云端的文件。这就造成了 DMS 扫描媒体文件信息的时间较长,给用户体验带来问题。

、 DMS 获取媒体文件的机制

DMS 启动时,会扫描本地系统目录,遍历所有的文件,然后挨个读取文件信息,判断其媒体格式,目前 DMS 支持的媒体格式如下所示:

媒体类型

必须支持的格式

可选支持的格式

Image

JPEG

PNG, GIF, TIFF

Audio

LPCM

AC3, AAC, MP3,WMA9, ATRAC3plus

Video

MPEG2

MPEG1, MPEG4,VC1, MPV1

DMS 为了获取所有的媒体文件,必须读取文件,判断其文件格式,另外还得根据文件格式读取特定的信息,比如版权信息,作者,如果是MP3 文件还要读取歌词等,如果是TS 文件还要读取文件的关键帧,以便生成可以快进快退的索引文件。通过上面DMS 扫描文件的机制可以看出,当这些操作是在本地文件上的话,时间延迟可以在接受的范围内,如果是互联网上的文件,则用户体验会直线下降,因为DMS 获取这些信息的同时会造成从云端下载整个文件,这个时候,网络成为了瓶颈。针对这个问题,我们必须详细分析其原理,找到解决网络成为瓶颈的问题。

、通过机顶盒播放云端文件存在的问题

目前在机顶盒上,由于受到网络的局限,播放云端的文件延迟时间较长。众所周知,IPTV 已经普及,IPTV 也是播放互联网上的视频,在网络速度达到2Mbps/ 秒的情况下也可以做到流畅播放,这证明可以通过改进DMS 处理文件的机制,做到流畅播放云端的文件。从目前在机顶盒上测试的情况来看,除了扫描媒体文件的时间过长外,播放媒体文件的速度相当流畅,而扫描过程造成对云端文件的下载是一个瓶颈,如果DMS 只获取文件的基本信息,针对云存储文件进行一些特殊的处理,我们完全可以做到提高用户体验,流畅播放云存储文件的目的。

10 、优化改进方法

1 、DMS 扫描目录时,只获取文件的基本信息,比如文件大小,文件名,文件创建时间,文件后缀名等。而不获取文件的内容信息,尽量减少扫描过程耗费的时间。

2 、由播放器来识别媒体文件的格式,可播放则播放,不可播放则提示用户。

这样处理后,可以把DMS 扫描媒体文件的时间限制在一个很小的范围内,播放器播放时在正式的读取文件内容信息进行播放处理。

http://blog.csdn.net/langeldep/article/details/6462489

DLNA架构在机顶盒上播放云存储文件的实现的更多相关文章

  1. 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)

    朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上) [下载本文PDF进行阅读] 设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践.在经过多年的软件开发实践之后,回过头来去看23种设 ...

  2. 【重磅资料】ArchSummit全球架构师峰会·2019华为云技术专场资料下载

    ArchSummit全球架构师峰会是InfoQ中国团队推出的重点面向高端技术管理者.架构师的技术会议,54%参会者拥有8年以上工作经验.ArchSummit聚焦业界强大的技术成果,秉承"实践 ...

  3. Java架构师线上问题排查,这些命令程序员一定用得到!

    Java架构师线上问题排查,这些命令程序员一定用得到! 线上问题排查,以下场景,你遇到过吗? 一.了解机器连接数情况 问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服 ...

  4. NVIDIA Turing Architecture架构设计(上)

    NVIDIA Turing Architecture架构设计(上) 在游戏市场持续增长和对更好的 3D 图形的永不满足的需求的推动下, NVIDIA 已经将 GPU 发展成为许多计算密集型应用的世界领 ...

  5. 公有云上构建云原生 AI 平台的探索与实践 - GOTC 技术论坛分享回顾

    7 月 9 日,GOTC 2021 全球开源技术峰会上海站与 WAIC 世界人工智能大会共同举办,峰会聚焦 AI 与云原生两大以开源驱动的前沿技术领域,邀请国家级研究机构与顶级互联网公司的一线技术专家 ...

  6. 机顶盒上gridview+ScrollView的使用。

    最近在机顶盒上做一个gridview, 其焦点需要在item的子控件上,但gridview的焦点默认在item上,通过 android:descendantFocusability="aft ...

  7. [转载]html5直接在网页上播放视频音频兼容所有浏览器

    文章给大家分享一个html5直接在网页上播放视频兼容所有浏览器,有需要的同学可参考. HTML5可以用video标签来播放视频 当前,video 元素支持三种视频格式: 格式 IE Firefox O ...

  8. 企业架构研究总结(33)——TOGAF架构内容框架之架构制品(上)

    4. 架构制品(Architectural Artifacts) 架构制品是针对某个系统或解决方案的模型描述,与架构交付物和构建块相比,架构制品既不是架构开发方法过程各阶段的合约性产物,亦不是企业中客 ...

  9. TOGAF架构内容框架之架构制品(上)

    TOGAF架构内容框架之架构制品(上) 4. 架构制品(Architectural Artifacts) 架构制品是针对某个系统或解决方案的模型描述,与架构交付物和构建块相比,架构制品既不是架构开发方 ...

随机推荐

  1. fuck WPFG.org

    今天一旦进入国外网站,就立刻跳转到WPFG.org.可能DNS被劫持污染了吧.用OpenDNS就行了.然后就没有这回事发生了 参考以下: https://www.opendns.com https:/ ...

  2. HTTP methods 与 RESTful API

    Note GET, primarily used to select resources. Other options for an API method include: POST, primari ...

  3. logstash tomcat catalina.out zabbix 插件不会引起崩溃

    input { file { type => "zj_api" path => ["/data01/applog_backup/zjzc_log/zj-api ...

  4. VC++中的类的内存分布(上)

    0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...

  5. openStack kilo 手动Manual部署随笔记录

    一 ,基于neutron网络资源主机(控制节点,网络节点,计算节点)网络规划配置 1, controller.cc 节点 网络配置截图

  6. eclispe远程调试tomcat

    在eclispe中新建web应用,名字叫webtest.里面只有一个HelloServlet.Web.xml配置如下. 修改tomcat的启动脚本startup.bat.复制startup.bat为s ...

  7. 编写jeb插件打印目标方法的交叉引用

    jeb插件的编写,文档在文件夹\jeb_1.5\doc\apidoc. 我这里的目的是回溯sendTextMessage等敏感api的调用路径,实现代码如下: from jeb.api import ...

  8. openstack中glance组件images的全部python API 汇总

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  9. ARM指令集——条件执行、内存操作指令、跳转指令

    ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...

  10. 代码,显示IPhone剩余磁盘空间

    #include <sys/mount.h> //这段代码示范怎么取得 iPhone 的剩余磁盘空间,还有全部磁盘空间 long long freeSpace() { struct sta ...