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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import