天天看點

DLNA開發——libupnp和PlatinumKit基礎庫對比

最近在開發DLNA功能,網絡上出現了相關功能的各種開源庫,我也研究了兩個開源的基礎庫libupnp和PlatinumKit,但最終選擇的是PlatinumKit基礎庫。我把兩者的特點記錄下來,希望對正在研究DLNA功能的人有點幫助:

1、libupnp和PlatinumKit都是基于UPNP規範的,是以在開發過程中最好下載下傳最新的規範文檔,也有助于執行個體代碼的閱讀

2、libupnp是C語言編寫的基礎庫,對外提供API;Platinumkit是C++編碼的基礎類庫和各種測試執行個體,包括所有類的說明文檔

3、libupnp基礎庫隻能同時支援一個裝置(DMS或者DMR)和一個control,這是它本身決定的;PlatinumKit可以同時支援多個device和一個control(這也是我選擇PlatinumKit的原因)

4、libupnp基礎庫已經增加了對IPv6的支援,PlatinumKit目前還沒有支援

5、兩個基礎庫對于音視訊、圖檔各種參數的解析支援不好,libupnp庫是直接不支援由上層應用實作,PlatinumKit中應用層mediaServer子產品有相關參數的解析,但都是寫死的,不能根據片源解析出具體的相關參數,例如圖檔的長、寬,播放時間,編碼格式等(libdlna庫結合ffmpeg實作了音視訊格式的解析,可以參考)

6、platinumkit庫中的裝置描述describe中相關資訊使用的是16進制資料,不友善擴充和更新,建議自己使用xml格式重新實作(參考libupnp規範文檔)

7、platinumkit庫中mediaServer和mediaRender兩個子產品的代碼可以作為參考,實際開發時自己重新設計類比較好

libupnp下載下傳位址:http://sourceforge.net/projects/pupnp/files/   最新版本  1.6.19

PlatinumKit下載下傳位址:http://www.plutinosoft.com                  最新版本  1.4.11

繼續閱讀