Android WebRTC 音视频开发总结(二)

Home / Android MrLee 2014-12-25 3768

1、先看WebRTCDemo的代码结构,如下图:

031509372409627

2、WebRTCDemo中音视频管理接口--MediaEngine,包括操作音频和视频的接口,详见MediaEngine的实现。

031506342634891

3、jni实现:细心的读者会发现WebRTCDemo下面有一个jni目录,这是android提供的调用本地代码的方式,即Java Native Call(读者如想详细了解JNI是怎么回事,可以买本书或找些相关资料来看看,这里面涉及到NDK编译,JNI语法)。 MediaEngine中native方法最终都是通过Jni下面的video_engine_jni.cc和video_engine_jni.cc来实现的,这些Jni方法最终就转到WebRTC提供的接口类中去了,即VoiceEngine和VideoEngine,顺着这个思路再看源代码就比较容易理解了。
4、如何调试WebRTCDemo中的c++代码? 根据JNI要求,需要用NDK编译WebRTCDemo,不过目前WebRTCDemo是直接调用现成的libwebrtcdemo-jni.so,如果要调试得自己写一个Andorid.mk文件将相关源代码加进来,几乎涉及大部分WebRTC代码,这样工作量有点大,所以放弃了,不知道大家还有没有更好的方式,谢谢指教!
貌似在ANDROID里直接调试WEBRTC的代码难度有点高,不过可以通过操作LOG来实现,具体方法调用如下(TraceLevel选项很多,可根据自己需求选择):
public void setTrace(boolean enable, VideoEngine.TraceLevel traceLevel) {
        if (enable) {
            vie.setTraceFile("/sdcard/trace.txt", false);
            vie.setTraceFilter(traceLevel);// huly
            return;
        }
        vie.setTraceFilter(VideoEngine.TraceLevel.TRACE_NONE);
    }

5、肯定有人会问IOS下WebRTCDemo在哪里?是怎么实现的?
答案:哥就是专搞android和IOS的,肯定碰到了,请看后面的文章。
题外话:被微软宠坏了兄弟们,在linux下改webrtc代码蛋疼了吧,哈哈哈!

本文链接:https://www.it72.com/493.htm

推荐阅读
最新回复 (0)
返回