zoukankan      html  css  js  c++  java
  • 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代码蛋疼了吧,哈哈哈!

  • 相关阅读:
    in_array函数的第三个参数 strict
    主动创建缓存与被动创建缓存
    INSERT IGNORE 与INSERT INTO的区别
    说说php取余运算(%)的那点事
    继承中的类常量的使用
    Scribe 分布式日志收集系统
    PHP命令行模式基本介绍
    【C/C++】学生排队吃饭问题
    【C/C++】链表
    【C/C++】01背包问题/动态规划
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/3578405.html
Copyright © 2011-2022 走看看