在android系统中开发DLNA

(注:以下文档为鄙人在开发过程中的总结,属于抛砖引玉,只适合尚未涉足这一技术方面的开发者参考学习,想要精通此技术,需要自己多多专研。)
内容目录
Part 1. 前言:DLNA简介
Part 2. 主体:DLNA在android中的开发流程
Part 2. 关于DLNA的其他知识
Part 1. 前言:DLNA简介
DLNA,Digital Living Network Alliance的简称,意在解决pc,家电,移动设备在局域网内的多媒体共享(音频,视频,图片)。说DLNA是多屏互动,太牵强了,专业点来讲,应该是媒体共享技术。使用DLNA功能需要满足的条件:
设备需要在同一局域网内;
至少需要一个DMS端,一个DMP端。
DLNA的几种产品:
1、DMS, Digital Media Server的缩写,把本设备内的多媒体文件(自己控制需要共享哪些文件)到DLNA服务端,
2、DMP,Digital Media Player的缩写,可以搜索局域网内,所有DMS提供的多媒体内容,并在本设备播放。
3、DMC,Digital MediaController的缩写,作为控制DMP搜索播放DMS的内容,与DMP不同,DMC可以控制局域网内的其他设备的DMS和DMP之间的交互,比如,pad作为DMS,机顶盒做DMP,手机用做DMC,三个设备在同一局域网内,手机可以直接控制让机顶盒播放pad里面共享出来的多媒体。
DMR,Digital Render的缩写,作用:DMP+DMR。
常见的产品规划:机顶盒做为DMP,音响或者手机、pad这些小屏设备作为DMS,手机作为DMC,事实上,手机端一般开发DMR。这就是市场上比较常见的DMS + DMR开发。功能齐全的应用应该囊括这两个功能。
Part 2. 主体:DLNA在android中的开发流程
本文档忽略个别细节,只讲核心的步骤:
1、DLNA是基于UPNP协议的,所以你应该选一个开源的第三方UPnP sdk用DLNA的核心处理。网址是:http://upnp.org/sdcps-and-certification/resources/sdks/C的,有C++的,有Java的,应有尽有,看你习惯用哪门语言开发。。有
2、参照upnp sdk的文档进行相应的核心开发,那些sdk普遍的过程都是编译出一个jni库。
3、使用jni库进行安卓的应用层开发。
4、这里单独讲一下DMP的开发,因为种种原因,DLNA能够传输的视频很有限而且安卓对视频的处理一直很受诟病,google的视频处理API MediaPlayr对视频的处理相当的弱,如果你想你的应用对各种视频具有良好的支持,建议一直一个视屏播放器,ffmpeg gstream vlc等等都行。
整个开发过程就是NDK下面的JNI开发,当然,个别SDK除外,有专门java处理的sdk。
下面推荐几个比较好的UPNP sdk:
Cling Platinum Cybergarage(海思用的就是这个sdk)
具体的开发技术都在相应的sdk的开发文档里面。
下面是一些比较好的博客:
1、有Platinum的DMS应用层实现教程,jni库没有源码,可以自己编译:
http://blog.csdn.net/lancees/article/details/9865411
有比较好的UPNP介绍和DLNA的思路开发
http://blog.csdn.net/bao_jinyu/article/category/1149905
开发人员必须知道在github上选择好东西
https://github.com/
基于Cling开发的DLNA应用
http://www.it165.net/pro/html/201303/4968.html
5、基于CyberGarage库的dlna开发,海思的DLNA应用是用的此sdk
http://luochao0913.blog.163.com/blog/static/6409386120133104208719/
Part 3. 关于DLNA的其他知识
提到DLNA,不得不提下其他类似的功能DLNA,miracast,airplay
DLNA,miracast,airplay协议的区别和优缺点以及实现方式的差异
DLNA
DNLA,是索尼、英特尔、微软等发起。苹果当时也是DLNA联盟的成员,而后来退出了并自立门户。 DLNA与苹果的AirPlay功能比较类似,协议也大体相同,他们都可以让你手机中的媒体内容投放到电视屏幕里。不同的是手机上的DLNA 并没有类似Apple TV的AirPlay 的镜像功能,也没有Apple TV 所支持的双屏体游戏体验。目前DLNA更多只是能将手机的照片和视频投送到大屏幕中。

Miracast
Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连为基础的无线显示标准。支持此标准的设备可通过无线方式分享视频画面,例如手机可通过Miracast将影片或照片直接在电视或其他装置。与DLNA不同的是,Miracast 也有类似于AirPlay 的镜像功能,可以将手机中屏幕内容直接投放到高清电视屏幕里,这样你也可以通过电视屏幕来玩游戏了。由于这一技术比较新,支持这一技术的设备到目前为止,十分稀少。而且技术不成熟,连小米盒子的Miracast接收到都还在开发中。

AirPlay
AirPlay 是苹果开发的一种无线技术,可以通过WiFi将iPhone 、iPad、iPod touch 等iOS 设备上的包括图片、音频、视频通过无线的方式传输到支持AirPlay 设备。AirPlay 还有一个特殊的功能,这一功能叫AirPlay镜像,配合上Apple TV这以功能可以将iPhone 或者iPad 上的画面无线传输到电视上,也就是说你设备显示的是什么电视屏幕显示就就是什么,而不仅限于图片和视频。所以用这一个功能来玩游戏是非常酷的,你可以拿着iPad 来当做方向盘,然后看着大屏玩游戏。另外AirPlay镜像最强大地方是它可以实现双屏游戏,让你的游戏有更多的交互。

DLNA协议:只适用于音频、视频、图片推送,将多媒体文件通过无线的方式传送到电视机或投影仪上面。
Miracast协议:是以WIFI直连为基础的无线显示标准。支持此标准的设备可通过无线方式分享视频画面,例如手机可通过Miracast将影片或照片直接在电视或其他装置播放而无需受到连接线缆长度的影响。Miracast跟Airplay是一样的镜像功能,可以将手机中屏幕内容直接投放到高清电视屏幕里,同样你也可以通过电视屏幕来玩游戏、播放在线视频。
Airplay协议:目前,苹果的AirPlay 更多的只适用于认证过的苹果设备,目前支持这一技术的主要是苹果自己的设备包括了iPad、iPhone、Apple TV等,此外还有一些苹果授权的合作伙伴的设备,如向Pioneer和Sony提供技术授权的音响。

发表评论

电子邮件地址不会被公开。 必填项已用*标注