DLNA相关知识(科普思路很清晰,转载)

参考资料

http://www.miui.com/thread-647727-1-1.html

http://pie.pconline.com.cn/443/4434846.html

这两篇文章从用户的角度分析DLNA设备的使用方法。

http://en.wikipedia.org/wiki/List_of_UPnP_AV_media_servers_and_clients

这个网址提供了支持UPnP/DLNA的服务器和客户端的名单。

http://jorgenmodin.net/index_html/archive/2009/12/26/list-of-open-source-dlnaupnp-av-software-devices

这个网址主要针对Linux平台的UPnP/DLNA软件。

http://www.right.com.cn/forum/thread-115634-1-1.html

http://www.right.com.cn/forum/forum.php?mod=viewthread&action=printable&tid=135975

这两篇是如何向OpenWRT中添加DLNA、AirPlay功能的帖子。

http://mayecn.com/blog/2013/04/23/dlna/

这也是一篇AirPlay的帖子。

DLNA各种设备角色的分析

设备角色的定义

DLNA体系结构最重要的一个概念就是设备角色(Device Category)。

以下对其中主要的角色做一个通俗的解释,至于准确的定义可查阅相关规范,这里就不赘述了。

  • Digital Media Server (DMS)。DMS就是存放多媒体数据的地方。

  • Digital Media Player (DMP)。DMP负责多媒体数据的解码。

  • Digital Media Renderer (DMR)。DMR负责多媒体数据的展示,比如显示图片、视频,输出音频等。

  • Digital Media Controller (DMC)。DMC负责媒体的播放控制,比如开始、停止、快进、快退等,相当于是个遥控器。

各种设备角色之间的交互

DLNA定义了两大类的交互。

  • 2-Box System
这里写图片描述

上图是一个典型的2-box应用。DMP播放DMS中的多媒体数据。这类应用其实和通常的流媒体播放差不多,即使不用DLNA,也可以用类似FTP、Samba之类的协议,分享DMS中的多媒体数据,因此还谈不上有多牛。

  • 3-Box System
这里写图片描述

上图是一个典型的3-box应用。DMR负责播放DMS的多媒体数据,但整个流程确是由DMC创建并控制的。举个通俗的例子就是,DMC相当于淘宝网,客户在网上下单,但淘宝网自己并没有商品,于是它将订单发给淘宝卖家(DMS),然后,DMS将商品交给快递(DMR),DMR最终将商品交到客户手中(将多媒体内容播放出来)。

2-Box System和3-Box System本身都是一大类的应用,上面图中展示的只是其中的典型个例。

设备能力模型

在DLNA刚推出的时候,设备功能还比较简单,采用设备角色模型运作的很好。但后来随着设备功能的完善,这个模型缺点也暴露无遗。

以音箱为例,作为一个标准的输出设备,它的角色应该是DMR。后来添加了各种音频处理的功能之后,也可以算是DMP。再后来,集成了外接USB存储设备,充当DMS似乎也是很自然的事。那么这个时候音箱的角色是什么呢?

针对这样的情况,DLNA的新标准引入了设备能力模型,简单的说就是在网络通知的时候,告诉其他设备,自己有哪些能力(也就是自己能充当哪些角色)。

还是以上面的音箱为例,进化后的音箱可以声称自己具备DMR+DMP+DMS的能力。

各种Android音频播放软件能力对比

  • QQ音乐

只能将在线音乐推送到DMR,不能推送本地音乐,也不能点播DMS中的音乐。

  • 酷狗音乐

可以推送在线音乐和本地音乐到DMR,但不能点播DMS中的音乐。

  • BubbleUPnP

功能最全,没有什么干不了的。推荐使用这个软件来调试设备的DLNA功能。

  • Onkyo Remote

貌似只能点播DMS+DMP中音乐,纯DMS的不行。换句话说它只是个DMC。

  • iMediaShare(又名Flipps)

全功能。由于本身不自带播放器,DMR/DMP需要借助其他的本地播放器来实现。这个是免费的,没有BubbleUPnP的同学,可以用这个代替。

  • UPnPlay

DMR+DMP+DMC。

各种服务端软件能力对比

  • Windows Media Player

功能齐全,没有什么干不了的。

  • ReadyMedia(又名MiniDLNA)

DMS。代码开源。

项目地址:

http://minidlna.sourceforge.net/

  • gmediarender

DMP+DMR。作为早期GNU项目的gmediarender,已经停止维护。2012年的时候,Henner Zeller为了将gmediarender移植到树莓派上,重新发起了该项目,并命名为gmrender-resurrect。Ubuntu等发行版所提供的gmediarender,已经改用gmrender-resurrect项目的代码。

gmrender-resurrect项目地址:

https://github.com/hzeller/gmrender-resurrect

  • ushare

DMS,该项目已经很久没有更新,不推荐使用。

  • Rygel

全功能。官网为:

https://wiki.gnome.org/Projects/Rygel

该项目用vala语言编写。Ubuntu中,可用以下命令安装环境:

sudo apt-get install valac

DLNA环境搭建

网络环境

PC和手机都用Wifi连接到同一个无线路由器上。这一点很重要,目前的手机软件暂时还不能搜索到整个局域网里的所有DLNA设备。

Windows环境设置

由于Windows自带的Windows Media Player已经具备完整的DLNA功能,因此可以首先在Windows上设置环境,用于确认手机和网络的设置是否正常。并为后面的Linux环境设置,提供一个参考平台。

Windows环境设置步骤(以Windows 7为例):

1.控制面板—>网络和Internet—>网络和共享中心,设置当前网络为家庭或工作网络。

2.控制面板—>网络和Internet—>网络和共享中心->高级共享设置->媒体流选项,启用媒体流。

3.计算机->库,选中“音乐”,右键菜单->共享,设置相应的共享权限。

4.控制面板->网络和Internet->家庭组,选中“与设备共享媒体”。

5.打开Windows Media Player,顶部菜单->媒体流,选中“允许远程控制我的播放器”和“自动允许设备播放我的媒体”。

这几步都设好之后,打开BubbleUPnP,即可搜索到Media Player设备。

Linux环境设置(以Ubuntu为例)

这里的Linux环境可以用VirtualBox搭建。在设置网卡时,需要设置两块网卡,分别设置如下:

网卡1:WAN 桥接

网卡2:LAN NAT

由于Linux下现有的几个全功能开源库,对设备配置的要求比较高。这里打算采用两个轻量级的开源库分别实现DMS和DMR。

DMS:ReadyMedia

1.安装

sudo apt-get install minidlna

2.修改minidlna配置

sudo gedit /etc/minidlna.conf

3.重启minidlna服务

sudo /etc/init.d/minidlna force-reload

DMR:gmediarender

1.安装

sudo apt-get install gmediarender

这里需要注意的是,gmediarender是在Ubuntu 14.10中添加到源里的,不过该软件包在Ubuntu 14.04下亦可正常运行。因此,安装的时候只要修改软件源的配置即可。

2.启动服务

gmediarender -d

3.添加gstreamer插件

gmediarender仅提供UPNP服务,真正的媒体播放使用gstreamer来完成。

Openwrt上的DLNA编译过程

方案一:Rygel

这个方案可参见:

http://wiki.openwrt.org/doc/howto/rygel

但是由于

http://patchwork.openwrt.org/

最近已经无法访问,因此该方案试了两天也没能弄出来,只好作罢了。

出现问题的原因在于Rygel是采用Vala语言编写的,需要有专门的Vala处理的脚本,而这个在标准的Openwrt中是没有的。

方案二:minidlna+gmediarender

1.minidlna

这个是目前官方支持的包。但是默认情况下,在Multimedia下并不可见。需要首先在Libraries下选择libffmpeg-mini或者libffmpeg-full,然后才能在Multimedia下看见。

此外配置方式和PC也略有不同:

1)配置文件在/etc/config/minidlna。相比PC版的配置,除了格式有所差异外,内容基本一致。唯一需要注意的是,其比PC版多了一个interface的配置项,需要将该项的内容改为在/etc/config/network中配置的lan的名称。

2)启动命令为:

/etc/init.d/minidlna enable

/etc/init.d/minidlna start

3)修改图标

图标数据在icons.c中。可用xxd命令转换png或者jpg文件为C的字节数组。

2.gmediarender

修改参见:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/openwrt_feeds

启动命令:

/etc/init.d/gmediarender start

Airplay

Airplay是Apple推出的媒体共享协议,可用Shairport包实现之。

Shairport是James Laird发起的开源项目,其官网是:

https://github.com/abrasive/shairport

Shairport基于Airplay v1协议,仅可用于推送音频流。(推送视频、图片需要用到Airplay v2协议)目前作者已经声明不再维护该项目。该项目比较好的分支有:

https://github.com/mikebrady/shairport-sync

这个分支添加了多设备音频流同步方面的内容。

参考:

http://raspberrypihq.com/how-to-turn-your-raspberry-pi-into-a-airplay-receiver-to-stream-music-from-your-iphone/

和DLNA、Airplay类似的协议还有Miracast和腾讯的QPlay,其中的QPlay基本山寨DLNA。

参考文献:

http://www.leiphone.com/news/201406/airplay-dlna-miracast.html

这篇文章介绍了DLNA、Airplay和Miracast等协议。

http://www.wi-fi.org/discover-wi-fi/wi-fi-certified-miracast

这是Miracast协议的官网。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容