最近在基於dlna開源庫重新實現dlna服務,對於手機端來說主要提供ControlPoint+媒體文件HttpServer功能。
調研了國內APP和友商的實現,以使用libupnp和Cling的居多,部分使用Platinum;
Cling Java開發的,對於APP來說容易導入,缺陷就是github上現在不再維護了;
Libupnp以C實現,設備和服務封裝不如cling及Platinum,開發起來不如後兩者容易,但勝在BSD license;
Platinum C++實現,對於device和服務封裝的較好,使用起來簡單;只是在用NDK R20進行編譯時需要修改config文件,費了半天功夫才編出可用.a文件;
Platinum GPL license,商用時有一定代價;但提供的mediacontroller 對象及FileMediaServer對象提供CP及媒體文件傳輸功能,只需要再實現代理對象的回調函數即可,開發難度相對簡單,DIDL功能在代碼裏也有實現。另外提供的測試可執行文件,對於理解DIDL,封裝的filemediaserver, MicMediaController這些對象很有幫助.
另外記錄下github上找到的各種方案的實現demo
easydlna(libupnp)
geniusgithub/MediaRender(platinum)
cling的有google實現的一個較早app可供參考