DLNA 的全稱是 DIGITAL LIVING NETWORK ALLIANCE(數字生活網絡聯盟)。成立于 2003 年 6 月 24 日, 其前身是 DHWG (Digital Home Working Group 數字家庭工作組),由 Sony、Intel、Microsoft 等發起成立,旨在解決個人 PC ,消費電器,移動設備在內的無線網絡和有線網絡的互聯互通,使得數字媒體和內容服務的無限制的共享和增長成為可能。
DLNA 將其整個應用規定成 5 個功能組件。從下到上依次為:網絡互連,,網絡協議,媒體傳輸,設備的發現控制和管理,媒體格式。
這類設備指家庭設備,具有比較大的尺寸及較全面的功能,主要與移動設備區別開來,下屬 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 Network Connectivity Function (M-NCF)。移動網絡連接功能設備。提供各種設備接入移動網絡的物理介質。DLNA 的希望是全部實現無線化。
-
Interoperability Unit (MIU)媒體交互設備。提供媒體格式的轉換以支持各種設備需要。
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-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 版本信息:
可見版本信息為: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:
看到Readyforrendering說明啟動成功等待手機連接( rk3308b 將作為 DMR 的名稱被手機看到)
將手機接入局域網(需要和 RK3308B 同一個網段),打開網易云播放器,選擇一首歌曲。
看到上圖紅色箭頭指定的圖標,點擊打開如下圖:
將會出現 rk3308b, 選擇后這首歌曲將被推送到 RK3308B 上,手機進入顯示播放的進度條。
播放的過程中,你可以調節音量,切換上下曲。
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35296 -
Firefly
+關注
關注
2文章
538瀏覽量
7028 -
RK3308
+關注
關注
1文章
39瀏覽量
1127
發布評論請先 登錄
相關推薦
評論