dlna互联功能开发
前言
dlna 的全称是 digital living network alliance(数字生活网络联盟)。成立于 2003 年 6 月 24 日, 其前身是 dhwg (digital home working group 数字家庭工作组),由 sony、intel、microsoft 等发起成立,旨在解决个人 pc ,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能。
dlna 将其整个应用规定成 5 个功能组件。从下到上依次为:网络互连,,网络协议,媒体传输,设备的发现控制和管理,媒体格式。
dlna 重要概念
home network device(hnd)
这类设备指家庭设备,具有比较大的尺寸及较全面的功能,主要与移动设备区别开来,下属 5 类设备:
digital media server(dms)。数字媒体服务器,提供媒体获取、记录、存储和输出功能。同时,内容保护功能是对 dms 的强制要求。dms 总是包含 dmp 的功能,并且肯能包含其他智能功能,包括设备/用户服务的管理;丰富的用户界面;媒体管理/收集和分发功能。dms 的例子有 pc、数字机顶盒(附带联网,存储功能)和摄像机等等。
dmp。数字媒体播放器。能从 dms/m-dms 上查找并获取媒体内容并播放和渲染显示。比如智能电视、家庭影院等。
dmc。数字媒体控制器,查找 dms 的内容并建立 dms 与 dmr 之间的连接并控制媒体的播放。如遥控器。
dmr。数字媒体渲染设备。通过其他设备配置后,可以播放从 dms 上的内容。与 dmp 的区别在于dmr 只有接受媒体和播放功能,而没查找有浏览媒体的功能。比如显示器、音箱等。
dmpr。数字媒体打印机,提供打印服务。网络打印机,一体化打印机就属于 dmpr。
mobile handheld devices(mhd)
手持设备,相比家庭设备,手持设备的功能相对简化一些,支持的媒体格式也会不同。
m-dms。与 dms 类似,如移动电话,随身音乐播放器等。
m-dmp。与 dmp 类似。比如智能移动电视。
m-dmd。移动多媒体下载设备。如随身音乐播放器,车载音乐播放器和智能电子相框等
m-dmu。移动多媒体下载设备。如摄像设备和手机等。
m-dmc。与 dmc 类似。如 da,智能遥控器。手持设备没有定义 m-dmr,因为手持设备会讲究便利性,会附加查找控制功能,要不然就只是普通的移动电视或收音机了。
networked infrastructure devices (nid)
联网支持设备。
mobile network connectivity function (m-ncf)。移动网络连接功能设备。提供各种设备接入移动网络的物理介质。dlna 的希望是全部实现无线化。
interoperability unit (miu)媒体交互设备。提供媒体格式的转换以支持各种设备需要。
dlna 框架
dlna 架构是个互联系统,因此在逻辑上它也类似 osi(open system interconnection,开放系统互连) 七层网络模型。
dlna 架构分为如下图 7 个层次:
networking connectivity 网络互联方式:包括物理连接的标准,有有线的,比如符合 ieee802.3标准的 ethernet;有无线的,比如符合 ieee802.11a/g 标准的 wifi,能做到 54mbps,蓝牙(802.15)等,技术都很成熟。现在 ofdm 和 mimo(802.11n)已经能做到 300mbps 了,早就超过比较普及的 100mbps的 ethernet 了,只不过产品还没有普及,以后肯定会用到。
networking stack 网络协议栈:dlna 的互联传输基本上是在 ipv4 协议簇的基础上的。用 tcp或者 udp 来传都可以。这一层相当于 osi 网络层。
device discovery&control 设备发现和控制。 这个层次是比较 essential 的,是 dlna 的基础协议框架。dlna 用 upnp 协议来实现设备的发现和控制。
media management 媒体管理。媒体管理包括媒体的识别、管理、分发和记录(保存),upnp av architecture:1 and upnp printer architecture:1 这两个 upnp 的文档会说明如何进行媒体管理。
media transport 媒体传输:这一层用 http(hypertext transfer protocol)超文本传输协议。就是平时我们上网用的媒体传输协议。http 用 tcp 可靠传输,也有混合 udp 方式的 http。现在 http 的最新版本是 http1.1。可选协议是 rtp。
media formats 媒体格式。格式 formats 在这里等同于编码格式 codec,平时我们说的编码格式比如 mpeg-2,avc,x264 就是视频编码格式;pcm,mp3(mpeg-2 layer 3),aac,flac 就是音频编码格式。而 avi,rmvb,mkv 这些是媒体封装格式,包含视频音频可能还有字幕流。比如一个常见的后缀为mkv 的文件,它的视频 codec 是 x264,音频是 aac,它的视音频编码属于 mpeg-4 codec family。
开发指引
前 3 节我们对 dlna 有个初步的了解,接下来我们来搭建一个 dlna 环境实现 m-dms (网易云音乐播放器)推送音乐到 dmr( roc-rk3308-cc )。
我们选择 gmrender-resurrect 开源代码来搭建 dmr 角色,找一个手机安装网易云播放器充当 m-dms角色。
编译
版本确认
编译之前我们先确认一下 gmrender-resurrect 和关联库 libupnp 的版本,确保版本符合以下要求:
gmrender-resurrect 版本:33600ab663f181c4f4f5c48aba25bf961760a300
libupnp 版本:1.6.21
buildroot 的 package 的配置信息在 buildroot/package 文件下相应的文件夹里,每个文件夹包含 3个文件,分别是*.in, *.hash,*.mk,其中
*.in 文件记录了 makeconfig 中的开关宏
*.hash 文件记录了代码压缩包的 hash 值和版本信息
*.mk 文件记录了代码编译信息和版本信息
例如查看gmrender-resurrect 版本信息:
cat buildroot/package/gmrender-resurrect/gmrender-resurrect.mk ################################################################################ # # gmrender-resurrect # ################################################################################ gmrender_resurrect_version = 33600ab663f181c4f4f5c48aba25bf961760a300 gmrender_resurrect_site = $(call github,hzeller,gmrender-resurrect,$(gmrender_resurrect_version)) # original distribution does not have default configure, # so we need to autoreconf: gmrender_resurrect_autoreconf = yes gmrender_resurrect_license = gpl-2.0+ gmrender_resurrect_license_files = copying gmrender_resurrect_dependencies = gstreamer1 libupnp define gmrender_resurrect_install_init_sysv $(install) -d -m 0755 $(topdir)/package/gmrender-resurrect/gmrender_service.sh $(target_dir)/sbin endef $(eval $(autotools-package))
可见版本信息为:33600ab663f181c4f4f5c48aba25bf961760a300。
配置
编译之前按照以下步骤进行配置:
设置环境变量,使用 source buildroot/build/envsetup.sh,选择配置 [1]
make menuconfig,配置 br2_package_gmrender_resurrect [=y]
编译 gmrender-resurrect
如果sdk没有编译过,请使用 build.sh 进行全编译。
如果sdk已经编译过,可以使用 make gmrender-resurrect-rebuild 只编译 gmrender-resurrect 及其相关库。
gmrender-resurrect 单独编译完成之后, 需要使用 make 命令来生成 rootfs。随后使用命令./mkfirmware.sh,生成rockdev/rootfs.img。
编译完成之后,按照《升级固件》,烧写文件系统到板子,即可运行。
运行
dlna启动前,板子需要已经连接网络,否则 dlna会启动失败。可通过《手机配网》,配置wifi网络;或者使用以太网。
启动dlna:
gmediarender -f rk3308
看到 ready for rendering 说明启动成功等待手机连接( rk3308 将作为 dmr 的名称被手机看到)
测试
将手机接入局域网(需要和 rk3308 同一个网段),打开网易云播放器,选择一首歌曲。
看到上图红色箭头指定的图标,点击打开如下图:
将会出现 rk3308, 选择后这首歌曲将被推送到 rk3308 上,手机进入显示播放的进度条。
播放的过程中,你可以调节音量,切换上下曲。
千兆RJ45电口怎么与SFP光口实现互连
电动卡车创企Lordstown股价周一收盘大涨8% 上市以来累计上涨57%
华为推出GENTLE MONSTER智能眼镜,全球首款支持NFC充电的设备
三光谱防明火摄像机是什么?可以用到什么地方?
太阳能收集对超构材料的作用影响
fireflyROC-RK3308主板DLNA互联功能开发简介
TDA2581Q引脚功能的电压资料参数
水文水资源专用遥测终端机 遥测终端机 北斗5G/4G通信 视频监控终端
新型微型集成频率梳:有望带来新一代的时钟、望远镜和通信技术
无线通讯5G的使用频率是多少呢?
英飞凌和谷歌ATAP携手为手势感应与存在检测应用开发先进雷达技术
加密货币借贷机构SALT宣布其业务将覆盖至美国另外20多个州
纯电动车的创新玩法 晨风北京街头秀“隐形” 技能
毫米波人体扫描仪市场: 过去、现在和未来
高压栅极驱动 IC 自举电路的设计与应用指南
如何在Zemax中载入热和结构变形数据?
华为Nova5Z虽然配置全面,但是缺点显而易见
iOS 6来啦! 苹果今日提供官方升级服务
结型场效应管的结构及工作原理
喜报 | 深开鸿多位技术专家成功当选OpenHarmony社区Committer!