0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fireflyROC-RK3308B主板CC-DLNA开发介绍

firefly 来源:firefly 作者:firefly 2019-12-20 08:54 次阅读
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 类设备:

  1. Digital Media Server(DMS)。数字媒体服务器,提供媒体获取、记录、存储和输出功能。同时,内容保护功能是对 DMS 的强制要求。DMS 总是包含 DMP 的功能,并且肯能包含其他智能功能,包括设备/用户服务的管理;丰富的用户界面;媒体管理/收集和分发功能。DMS 的例子有 PC、数字机顶盒(附带联网,存储功能)和摄像机等等。

  2. DMP。数字媒体播放器。能从 DMS/M-DMS 上查找并获取媒体内容并播放和渲染显示。比如智能电视、家庭影院等。

  3. DMC。数字媒体控制器,查找 DMS 的内容并建立 DMS 与 DMR 之间的连接并控制媒体的播放。如遥控器。

  4. DMR。数字媒体渲染设备。通过其他设备配置后,可以播放从 DMS 上的内容。与 DMP 的区别在于DMR 只有接受媒体和播放功能,而没查找有浏览媒体的功能。比如显示器、音箱等。

  5. DMPr。数字媒体打印机,提供打印服务。网络打印机,一体化打印机就属于 DMPr。

Mobile Handheld Devices(MHD)

手持设备,相比家庭设备,手持设备的功能相对简化一些,支持的媒体格式也会不同。

  1. M-DMS。与 DMS 类似,如移动电话,随身音乐播放器等。

  2. M-DMP。与 DMP 类似。比如智能移动电视。

  3. M-DMD。移动多媒体下载设备。如随身音乐播放器,车载音乐播放器和智能电子相框等

  4. M-DMU。移动多媒体下载设备。如摄像设备和手机等。

  5. M-DMC。与 DMC 类似。如 DA,智能遥控器。手持设备没有定义 M-DMR,因为手持设备会讲究便利性,会附加查找控制功能,要不然就只是普通的移动电视或收音机了。

Networked Infrastructure Devices (NID)

联网支持设备。

  1. Mobile Network Connectivity Function (M-NCF)。移动网络连接功能设备。提供各种设备接入移动网络的物理介质。DLNA 的希望是全部实现无线化。

  2. Interoperability Unit (MIU)媒体交互设备。提供媒体格式的转换以支持各种设备需要。

DLNA 框架

DLNA 架构是个互联系统,因此在逻辑上它也类似 OSI(Open System Interconnection,开放系统互连) 七层网络模型。

DLNA 架构分为如下图 7 个层次:

  1. NetWorking Connectivity 网络互联方式:包括物理连接的标准,有有线的,比如符合 IEEE802.3标准的 Ethernet;有无线的,比如符合 IEEE802.11a/g 标准的 WiFi,能做到 54Mbps,蓝牙(802.15)等,技术都很成熟。现在 OFDM 和 MIMO(802.11n)已经能做到 300Mbps 了,早就超过比较普及的 100Mbps的 Ethernet 了,只不过产品还没有普及,以后肯定会用到。

  2. NetWorking Stack 网络协议栈:DLNA 的互联传输基本上是在 IPV4 协议簇的基础上的。用 TCP或者 UDP 来传都可以。这一层相当于 OSI 网络层。

  3. Device Discovery&Control 设备发现和控制。 这个层次是比较 essential 的,是 DLNA 的基础协议框架。DLNA 用 UPnP 协议来实现设备的发现和控制。

  4. Media Management 媒体管理。媒体管理包括媒体的识别、管理、分发和记录(保存),UPnP AV Architecture:1 and UPnP Printer Architecture:1 这两个 UPnP 的文档会说明如何进行媒体管理。

  5. Media Transport 媒体传输:这一层用 HTTP(HyperText Transfer Protocol)超文本传输协议。就是平时我们上网用的媒体传输协议。HTTP 用 TCP 可靠传输,也有混合 UDP 方式的 HTTP。现在 HTTP 的最新版本是 HTTP1.1。可选协议是 RTP。

  6. 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-RK3308B-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。

配置

编译之前按照以下步骤进行配置:

  • 设置环境变量,使用sourcebuildroot/build/envsetup.sh,选择配置[1]

  • makemenuconfig,配置BR2_PACKAGE_GMRENDER_RESURRECT[=y]

编译 gmrender-resurrect

  • 如果SDK没有编译过,请使用 build.sh 进行全编译。

  • 如果SDK已经编译过,可以使用makegmrender-resurrect-rebuild只编译gmrender-resurrect及其相关库。

gmrender-resurrect 单独编译完成之后, 需要使用 make 命令来生成 rootfs。随后使用命令./mkfirmware.sh,生成rockdev/rootfs.img。

编译完成之后,烧写文件系统到板子,即可运行。

运行

DLNA启动前,板子需要已经连接网络,否则 DLNA会启动失败。可通过《手机配网》,配置WiFi网络;或者使用以太网

启动DLNA:

gmediarender -f rk3308b

看到Readyforrendering说明启动成功等待手机连接( rk3308b 将作为 DMR 的名称被手机看到)

测试

将手机接入局域网(需要和 RK3308B 同一个网段),打开网易云播放器,选择一首歌曲。

看到上图红色箭头指定的图标,点击打开如下图:

将会出现 rk3308b, 选择后这首歌曲将被推送到 RK3308B 上,手机进入显示播放的进度条。

播放的过程中,你可以调节音量,切换上下曲。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6081

    浏览量

    34907
  • Firefly
    +关注

    关注

    2

    文章

    538

    浏览量

    6924
  • RK3308
    +关注

    关注

    1

    文章

    39

    浏览量

    1044
收藏 人收藏

    评论

    相关推荐

    firefly RK3308开发板ROC-RK3308-CC四核64位AIOT主板规格

    ROC-RK3308-CC 四核64位AIOT主板
    的头像 发表于 11-03 11:08 4735次阅读
    firefly <b class='flag-5'>RK3308</b><b class='flag-5'>开发</b>板ROC-<b class='flag-5'>RK3308-CC</b>四核64位AIOT<b class='flag-5'>主板</b>规格

    fireflyROC-RK3308B-CC--启动模式说明

    ROC-RK3308B-CC 有着非常灵活的启动方式。一般情况下,除非硬件损坏,ROC-RK3308B-CC 主板是不会变砖的。
    的头像 发表于 12-20 09:20 2782次阅读

    fireflyROC-RK3308B主板CC升级固件简介

    本文介绍了如何将主机上的固件文件,通过 USB Type-C 线,烧写到开发板的emmc闪存中。
    的头像 发表于 12-20 09:29 1819次阅读

    fireflyROC-RK3308B主板CC教程简介

    确认主板配件连接无误后,通过 USB Type-C 线给 ROC-RK3308B-CC 供电。
    的头像 发表于 12-20 09:32 2212次阅读

    微雪电子RK3308主板CC启动模式介绍

    ROC-RK3308-CC 有着非常灵活的启动方式。一般情况下,除非硬件损坏,ROC-RK3308-CC 主板是不会变砖的。
    的头像 发表于 12-23 15:47 2284次阅读

    微雪电子RK3308主板CC上手介绍

    确认主板配件连接无误后,通过 USB Type-C 线给 ROC-RK3308-CC 供电。
    的头像 发表于 12-23 15:50 2178次阅读

    Core 3308Y固件ROC RK3308B CC PLUS Buildroot NoUI

    电子发烧友网站提供《Core 3308Y固件ROC RK3308B CC PLUS Buildroot NoUI.txt》资料免费下载
    发表于 09-13 10:01 1次下载
    Core <b class='flag-5'>3308</b>Y固件ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Buildroot NoUI

    Core 3308Y固件ROC RK3308B CC PLUS Buildroot MiniGUI

    电子发烧友网站提供《Core 3308Y固件ROC RK3308B CC PLUS Buildroot MiniGUI.txt》资料免费下载
    发表于 09-13 10:00 3次下载
    Core <b class='flag-5'>3308</b>Y固件ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Buildroot MiniGUI

    Core 3308Y ROC RK3308B CC PLUS Ubuntu Minimal固件

    电子发烧友网站提供《Core 3308Y ROC RK3308B CC PLUS Ubuntu Minimal固件.txt》资料免费下载
    发表于 09-13 09:55 0次下载
    Core <b class='flag-5'>3308</b>Y ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Ubuntu Minimal固件

    Core 3308Y固件ROC RK3308B CC PLUS Ubuntu Desktop固件

    电子发烧友网站提供《Core 3308Y固件ROC RK3308B CC PLUS Ubuntu Desktop固件.txt》资料免费下载
    发表于 09-13 09:53 0次下载
    Core <b class='flag-5'>3308</b>Y固件ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Ubuntu Desktop固件

    Core 3308Y固件ROC RK3308B CC PLUS支持Docker固件

    电子发烧友网站提供《Core 3308Y固件ROC RK3308B CC PLUS支持Docker固件.txt》资料免费下载
    发表于 09-13 09:52 10次下载
    Core <b class='flag-5'>3308</b>Y固件ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS支持Docker固件

    Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件

    电子发烧友网站提供《Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件.txt》资料免费下载
    发表于 09-13 09:51 0次下载
    Core <b class='flag-5'>3308</b>Y固件ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Buildroot NoUI固件

    ROC RK3308B CC Buildroot Qt Desktop固件

    电子发烧友网站提供《ROC RK3308B CC Buildroot Qt Desktop固件.txt》资料免费下载
    发表于 09-13 09:49 0次下载
    ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Buildroot Qt Desktop固件

    IoT四核64位开源主板ROC RK3308B CC规格书

    电子发烧友网站提供《IoT四核64位开源主板ROC RK3308B CC规格书.pdf》资料免费下载
    发表于 09-13 09:35 1次下载
    IoT四核64位开源<b class='flag-5'>主板</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b>规格书

    四核64位开源主板ROC RK3308B CC Plus规格书

    电子发烧友网站提供《四核64位开源主板ROC RK3308B CC Plus规格书.pdf》资料免费下载
    发表于 09-13 09:33 0次下载
    四核64位开源<b class='flag-5'>主板</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Plus规格书