先科普一下
DLNA,Digital Living Network Alliance,数字生活网络联盟。既然是 network 那么至少在同一个网络内,也就是一般意义上的局域网。而且 DLNA 至少还需要一个 DMS 端和一个 DMP 端。
- DMS,Digital Media Server,服务端,例如手机、平板、音响等
- DMP,Digital Media Player,可以搜索局域网内所有由 DMS 提供的内容,例如机顶盒
- DMC,Digital Media Controller,可以控制 DMS 或 DMP,例如手机本身也是 DMC,它控制机顶盒从平板那里获取内容进行播放
- DMR,Digital Render
DLNA 实际场景
通过 DLNA 协议,你可以方便地把手机里播放的视频投射到家里的电脑上或者智能电视上。目前很多软件都有这个功能了,如果你购买了 Android 智能电视或者某些电视盒子,就可以电视或者盒子中安装类似 PPTV/搜狐 TV 这样的视频软件,然后在 PC 机的视频播放器或者手机播放视频的界面中,选择投射到电视或者盒子上即可。
UPnP
DLNA 标准包括多项协议及标准,其中最重要的部分是 UPnP,Universal Plug and Play,它主要用于实现智能设备的互联互通,它定义了局域网内的设备如何互相发现对方,如何提供服务,如何控制对方等一系列的过程。
UPnP 文档:
- UPnP协议编程实践 http://blog.csdn.net/lancees/article/details/8132719
- 推荐:http://blog.csdn.net/bao_jinyu/article/category/1149905
- 开源实现 https://github.com/geniusgithub
UPnP SDK
- Platinum SDK
- CyberGarage
- Cling
Platinum SDK
编译:
- http://blog.csdn.net/lancees/article/details/8951679
- http://blog.csdn.net/lancees/article/details/9865411
- http://blog.csdn.net/lancees/article/details/9178385
- iOS:http://blog.csdn.net/u013756604/article/details/53590680
- 比较详尽:http://ios.jobbole.com/84764/
CyberGarage:
- http://blog.csdn.net/lancees/article/details/8477513
- http://luochao0913.blog.163.com/blog/static/6409386120133104208719/
Cling
1. NanoHTTPD 是一个微型的 Web 服务器,开源地址:http://elonen.iki.fi/code/nanohttpd/
2. DLNA 工具包采用的是.cling
其实有了上面两个开源项目,解决起来就很容易!
1. 首先,暴露服务AndroidUpnpService,且绑定服务;
2. 然后,构建本地媒体服务器,实现Service(PS:采用cling,DMS只需要实现ContentDirectoryService即可)
3. 再次,把本地的媒体文件,全部构建进Web服务器; 最后,实现一些必要的监听,如设备发现等等
其他方案
Miracast、AirPlay