天天看點

在android系統中開發DLNA

(注:以下文檔為鄙人在開發過程中的總結,屬于抛磚引玉,隻适合尚未涉足這一技術方面的開發者參考學習,想要精通此技術,需要自己多多專研。)

内容目錄

Part 1. 前言:DLNA簡介

Part 2. 主體:DLNA在android中的開發流程

Part 2. 關于DLNA的其他知識

Part 1. 前言:DLNA簡介

  DLNA,Digital Living Network Alliance的簡稱,意在解決pc,家電,移動裝置在區域網路内的多媒體共享(音頻,視訊,圖檔)。說DLNA是多屏互動,太牽強了,專業點來講,應該是媒體共享技術。使用DLNA功能需要滿足的條件:

  裝置需要在同一區域網路内;

  至少需要一個DMS端,一個DMP端。

  DLNA的幾種産品:

1、DMS, Digital Media Server的縮寫,把本裝置内的多媒體檔案(自己控制需要共享哪些檔案)到DLNA服務端,

2、DMP,Digital Media Player的縮寫,可以搜尋區域網路内,所有DMS提供的多媒體内容,并在本裝置播放。

3、DMC,Digital MediaController的縮寫,作為控制DMP搜尋播放DMS的内容,與DMP不同,DMC可以控制區域網路内的其他裝置的DMS和DMP之間的互動,比如,pad作為DMS,機頂盒做DMP,手機用做DMC,三個裝置在同一區域網路内,手機可以直接控制讓機頂盒播放pad裡面共享出來的多媒體。

  DMR,Digital Render的縮寫,作用:DMP+DMR。

  常見的産品規劃:機頂盒做為DMP,音響或者手機、pad這些小屏裝置作為DMS,手機作為DMC,事實上,手機端一般開發DMR。這就是市場上比較常見的DMS + DMR開發。功能齊全的應用應該囊括這兩個功能。

Part 2. 主體:DLNA在android中的開發流程

本文檔忽略個别細節,隻講核心的步驟:

1、DLNA是基于UPNP協定的,是以你應該選一個開源的第三方UPnP sdk用DLNA的核心處理。網址是:http://upnp.org/sdcps-and-certification/resources/sdks/C的,有C++的,有Java的,應有盡有,看你習慣用哪門語言開發。。有

2、參照upnp sdk的文檔進行相應的核心開發,那些sdk普遍的過程都是編譯出一個jni庫。

3、使用jni庫進行安卓的應用層開發。

4、這裡單獨講一下DMP的開發,因為種種原因,DLNA能夠傳輸的視訊很有限而且安卓對視訊的處理一直很受诟病,google的視訊處理API MediaPlayr對視訊的處理相當的弱,如果你想你的應用對各種視訊具有良好的支援,建議一直一個視屏播放器,ffmpeg gstream vlc等等都行。

整個開發過程就是NDK下面的JNI開發,當然,個别SDK除外,有專門java處理的sdk。

下面推薦幾個比較好的UPNP sdk:

Cling Platinum Cybergarage(海思用的就是這個sdk)

具體的開發技術都在相應的sdk的開發文檔裡面。

下面是一些比較好的部落格:

1、有Platinum的DMS應用層實作教程,jni庫沒有源碼,可以自己編譯:

http://blog.csdn.net/lancees/article/details/9865411

有比較好的UPNP介紹和DLNA的思路開發

http://blog.csdn.net/bao_jinyu/article/category/1149905

開發人員必須知道在github上選擇好東西

https://github.com/

基于Cling開發的DLNA應用

http://www.it165.net/pro/html/201303/4968.html

5、基于CyberGarage庫的dlna開發,海思的DLNA應用是用的此sdk

http://luochao0913.blog.163.com/blog/static/6409386120133104208719/

Part 3. 關于DLNA的其他知識

提到DLNA,不得不提下其他類似的功能DLNA,miracast,airplay

DLNA,miracast,airplay協定的差別和優缺點以及實作方式的差異

DLNA 

DNLA,是索尼、英特爾、微軟等發起。蘋果當時也是DLNA聯盟的成員,而後來退出了并自立門戶。 DLNA與蘋果的AirPlay功能比較類似,協定也大體相同,他們都可以讓你手機中的媒體内容投放到電視螢幕裡。不同的是手機上的DLNA 并沒有類似Apple TV的AirPlay 的鏡像功能,也沒有Apple TV 所支援的雙屏體遊戲體驗。目前DLNA更多隻是能将手機的照片和視訊投送到大螢幕中。 

Miracast 

Miracast是由Wi-Fi聯盟于2012年所制定,以Wi-Fi直連為基礎的無線顯示标準。支援此标準的裝置可通過無線方式分享視訊畫面,例如手機可通過Miracast将影片或照片直接在電視或其他裝置。與DLNA不同的是,Miracast 也有類似于AirPlay 的鏡像功能,可以将手機中螢幕内容直接投放到高清電視螢幕裡,這樣你也可以通過電視螢幕來玩遊戲了。由于這一技術比較新,支援這一技術的裝置到目前為止,十分稀少。而且技術不成熟,連小米盒子的Miracast接收到都還在開發中。

AirPlay 

AirPlay 是蘋果開發的一種無線技術,可以通過WiFi将iPhone 、iPad、iPod touch 等iOS 裝置上的包括圖檔、音頻、視訊通過無線的方式傳輸到支援AirPlay 裝置。AirPlay 還有一個特殊的功能,這一功能叫AirPlay鏡像,配合上Apple TV這以功能可以将iPhone 或者iPad 上的畫面無線傳輸到電視上,也就是說你裝置顯示的是什麼電視螢幕顯示就就是什麼,而不僅限于圖檔和視訊。是以用這一個功能來玩遊戲是非常酷的,你可以拿着iPad 來當做方向盤,然後看着大屏玩遊戲。另外AirPlay鏡像最強大地方是它可以實作雙屏遊戲,讓你的遊戲有更多的互動。 

DLNA協定:隻适用于音頻、視訊、圖檔推送,将多媒體檔案通過無線的方式傳送到電視機或投影儀上面。

Miracast協定:是以WIFI直連為基礎的無線顯示标準。支援此标準的裝置可通過無線方式分享視訊畫面,例如手機可通過Miracast将影片或照片直接在電視或其他裝置播放而無需受到連接配接線纜長度的影響。Miracast跟Airplay是一樣的鏡像功能,可以将手機中螢幕内容直接投放到高清電視螢幕裡,同樣你也可以通過電視螢幕來玩遊戲、播放線上視訊。

Airplay協定:目前,蘋果的AirPlay 更多的隻适用于認證過的蘋果裝置,目前支援這一技術的主要是蘋果自己的裝置包括了iPad、iPhone、Apple TV等,此外還有一些蘋果授權的合作夥伴的裝置,如向Pioneer和Sony提供技術授權的音響。

繼續閱讀