Android WebRTC 音視頻開發總結(二)-- webrtcdemo介紹


 

這節主要介紹WebRTCDemo的結構,以此來簡單了解WebRTC的調用流程,轉載請說明出處(博客園RTC.Blacker)

 

1、先看WebRTCDemo的代碼結構,如下圖:

2WebRTCDemo中音視頻管理接口--MediaEngine,包括操作音頻和視頻的接口,詳見MediaEngine的實現。

 

3、jni實現:細心的讀者會發現WebRTCDemo下面有一個jni目錄,這是android提供的調用本地代碼的方式,即Java Native Call(讀者如想詳細了解JNI是怎么回事,可以買本書或找些相關資料來看看,這里面涉及到NDK編譯,JNI語法)。

MediaEnginenative方法最終都是通過Jni下面的video_engine_jni.cc和video_engine_jni.cc來實現的,這些Jni方法最終就轉到WebRTC提供的接口類中去了,即VoiceEngineVideoEngine,順着這個思路再看源代碼就比較容易理解了。 

 

4、如何調試WebRTCDemo中的c++代碼?

根據JNI要求,需要用NDK編譯WebRTCDemo,不過目前WebRTCDemo是直接調用現成的libwebrtcdemo-jni.so,如果要調試得自己寫一個Andorid.mk文件將相關源代碼加進來,幾乎涉及大部分WebRTC代碼,這樣工作量有點大,所以放棄了。

 

WebRTCDemo過濾和查看日志的具體方法如下(TraceLevel選項很多,可根據自己需求選擇):

1 public void setTrace(boolean enable, VideoEngine.TraceLevel traceLevel) {
2         if (enable) {
3             vie.setTraceFile("/sdcard/trace.txt", false);
4             vie.setTraceFilter(traceLevel);// huly
5             return;
6         }
7         vie.setTraceFilter(VideoEngine.TraceLevel.TRACE_NONE);
8     }

后面我還會具體講到自定義開發中如果修改底層代碼排查問題。

 

5、肯定有人會問IOS下WebRTCDemo在哪里?是怎么實現的?

答案:請繼續關注


題外話:被微軟寵壞了兄弟們,在linux下改webrtc代碼蛋疼了吧,哈哈哈!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM