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

2024-02-19 11:48

本文主要是介绍DLNA架构在机顶盒上播放云存储文件的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

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

 

1 、 DLNA 简介

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

 

2 、 DMS 简介

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

 

3 、 UPNP 简介

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

 

4 、云存储简介

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

 

5 、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 标准通过) ,同时进行多方的高画质影音播 放,仍是相当难以达成的。

 

6 、 DLNA 必须具备的功能

       6.1 播放多媒体文件

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

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

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

 

7 、 DLNA 与云存储系统的嫁接

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

 

8 、 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 获取这些信息的同时会造成从云端下载整个文件,这个时候,网络成为了瓶颈。针对这个问题,我们必须详细分析其原理,找到解决网络成为瓶颈的问题。

 

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

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


10 、优化改进方法

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

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

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

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

这篇关于DLNA架构在机顶盒上播放云存储文件的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724564

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo