无线投屏解决方案-DLNA方案调研

690 阅读5分钟

DLNA--无线投屏方案调研

1、DLNA是一套标准,是由微软,因特尔,索尼等大厂商组成的联盟,他们制定了一套标准让大家去用;

DLNA并不是创造技术,而是形成一种解决的方案,一种大家可以遵守的规范。所以,其选择的各种技术和协议都是当前所应用很广泛的技术和协议。而UPNP就是其中一个主要的协议;

2、UPnP通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标;

3、DLNA设备分类

  • DMS(Digital Media Server),数字媒体服务器,媒体内容的提供者,为DMP/DMR提供内容播放,DMS可以控制提供哪些媒体内容。典型设备如PC,数字机顶盒,手机,音乐播放器等;
  • DMP(Digital Media Player),数字媒体播放器,可以从DMS上查找获取媒体内容并播放,典型设备如:智能电视;
  • DMR(Digital Media Renderer),数字媒体渲染器,可以播放DMS上的媒体内容,跟DMP的区别是DMR只有媒体播放功能,DMP除了播放功能外,还有浏览查找媒体的功能,典型设备如:显示器,音箱;
  • DMC(Digital Media Controller),数字媒体控制器,可以查找DMS的内容,建立DMS和DMR之间的连接,控制媒体的播放,典型设备如:遥控器;

DLNA架构图

DLNA架构图.png

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

UPNP协议架构

UPNP协议架构.drawio.png

UPnP模块图

UPnP模块图.drawio.png

主流开源库对比

UPnP主流开源库platform支持功能支持(都包括音视频+图片)优势劣势评估工作量
platinum C++Windows MAC OSX Linux Android1.支持上一首、下一首 2.支持音量控制 3.支持快进、快退,可以通过进度条的方式实现 4.支持开始、暂停和停止1.跨平台,可移植性强 2.可以同时支持多个(DMS或者DMR)和一个control1.目前不支持IPv6 2.编译复杂,需要使用JNI,依赖Neptune 3.对于音视频、图片各种参数的解析支持不好,如需要对应这一步使用代替的方案,例如:FFMPEG实现了音视频格式的解析,可以参考0.platinum upnp移植 1.车机接入UPnP协议(连接,局域网可见) 2.数据接收(媒体数据) 3.image、audio、video数据处理(Android自定义播放器处理【显示+播放】) 4.指令或者事件(开始、停止、快进等)接收处理响应(播放器响应)
cling JavaAndroid1.支持上一首、下一首 2.支持音量控制 3.支持快进、快退,可以通过进度条的方式实现 4.支持开始、暂停和停止 5.支持图片拖动、缩放 6.支持获取MediaInfo信息1.使用简单 2.开源项目比较多Cling已停止维护1.车机接入UPnP协议(连接,局域网可见) 2.数据接收(媒体数据) 3.image、audio、video数据处理(Android自定义播放器处理【显示+播放】) 4.指令或者事件(开始、停止、快进等)接收处理响应(播放器响应)
cybergarage JavaAndroid1.支持上一首、下一首 2.支持音量控制 3.支持快进、快退 4.支持开始、暂停和停止1.同时支持IPv4和IPv6源码中存在一些bug,在使用的时候需要注意,如使用到了有bug的逻辑,需要对源码进行修改1.车机接入UPnP协议(连接,局域网可见) 2.数据接收(媒体数据) 3.image、audio、video数据处理(Android自定义播放器处理【显示+播放】) 4.指令或者事件(开始、停止、快进等)接收处理响应(播放器响应)
libupnp CLinux Android1.支持快进、快退 2.支持开始、暂停和停止1.同时支持IPv4和IPv61.只能同时支持一个设备(DMS或者DMR)和一个control 2.对于音视频、图片各种参数的解析支持不好,直接不支持由上层应用实现 3.适配比较困难0.移植 1.车机接入UPnP协议(连接,局域网可见) 2.数据接收(媒体数据) 3.image、audio、video数据处理(Android自定义播放器处理【显示+播放】) 4.指令或者事件(开始、停止、快进等)接收处理响应(播放器响应)
GUPNP CLinux-1.使用GObject和libsoup,是libupnp的扩展 2.允许完全异步使用,而不使用线程1.只能同时支持一个设备(DMS或者DMR)和一个control 2.对于音视频、图片各种参数的解析支持不好 3.使用方式多以PHP的方式使用-

DLNA 媒体格式

媒体格式:规定了进行数字媒体和内容的共享和使用的时候的媒体格式; 其必须支持的是:JPEG,LPCM(线性脉冲编码调制),MPEG2;

其余为可选的支持格式:

Image -- JPEG、PNG、GIF、TIFF

Audio -- LPCM、AAC、AC-3、ATRAC、3plus、MP3、WMA9

Video -- MPEG2、MPEG-1、MPEG-4*、 AVC、WMV9