本文章主要介绍WEBRTC在各平台下调试或日志查看方式,以方便问题排查,包括BS,PC,Android,IOS(本系列文章转载请说明出处,博客园RTC.Blacker).

1,浏览器开发:

这种开发方式不需要下载和编译WEBRTC源码(很多人都是"死"在这里的,不过确实很麻烦,原因就不赘述了),直接调用浏览器提供的API,

入门相对简单(这并不意味着效果差,恰恰相反,因为浏览器厂商为你做了很多的优化,很多时候效果比自己去弄好多了).

这种方式的缺陷就是无法修改底层代码,如果您想调整一些实现方式或与现有系统结合就不好弄了.

所以如果这种方式出问题了一般都是您自己的问题,相应的查问题方式就是console.log和wireshake之类的工具.

2,Android开发:

这部分是我要重点介绍的,很多不熟悉ndk或linux的不知道怎么去查看底层的日志,其实通过logcat您可以比较方便地看到底层的输出.

如果您正在使用Talk进行开发,可参考如下调用方式:

如果没有使用到libjingle,可参考MediaEngine.java的调用方式:

Logging.java在JNI中实现如下:

构造g_trace_callback是因为需要在其构造函数中注册一个callback,LogcatTraceContext实现如下:

呵呵呵,搞过ndk开发的,很熟悉__android_log_print这个函数吧.

这时候您可能会有疑问,如果要在调用Logging.enableTracing()方法前查看初始化libjingle环境的日志,怎么搞呢?

请看WebRtcVoiceEngine构造函数的实现:

它在构造函数里面直接注册callback,当webrtc需要输出log的时候就可以直接执行自己定义的callback,

这样就可以很好滴控制日志的输出,设计得很巧妙,比看啥设计模式的理论书籍都管用.

这时候您还有新的疑问,如果要在调用Logging.enableTracing()方法前查看webrtc底层的日志,怎么办呢?

下面这些代码是我自己加上去的(不是最好的方案),因为webrtc目前还不完善的原因,日志都搞得这么复杂(历史原因就是webrtc与talk是后面才整合到一起的),估计他们后面会改得更合理,所以我也这样先将就着,呵呵.

3,PC开发:

PC上基本上都是用VS在开发,很好调试,既可以将日志输出到控制台,还可以直接在代码中下断点,或者抓包,手段很多,操作起来也不复杂.

4,iOS开发:

xcode跟vs差不多,很方便,无需赘述.

吐槽一句,xcode,eclipse,virtual machine一起运行,mac表示很吃力,机器又得升级换代了,下个月的信用卡哦,亚历山大.

Android IOS WebRTC 音视频开发总结(十七)-- 调试技巧的更多相关文章

  1. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  2. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  3. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  4. Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会

    文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...

  5. Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验

    前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...

  6. Android IOS WebRTC 音视频开发总结(二四)-- p2p调用堆栈

    本文主要分析webrtc音视频点对点部分的代码结构,文章来自博客园RTC.Blacker,转载请说明出处. 前段时间在查一个偶尔断线的问题(这种问题最蛋疼,不好重现,只能凭经验去搞),所以理了下web ...

  7. Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明

    本文主要介绍如何测试基于浏览器和手机的视频通话程序,转载请说明出处,文章来自博客园RTC.Blacker,更多详见www.blackerteam.com   很多人想测试浏览器(包括浏览器版本和桌面e ...

  8. Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析

    本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID ...

  9. Android IOS WebRTC 音视频开发总结(六十)-- 您为什么招不到适合的音视频人才

    本文主要介绍音视频行业招聘现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 有过音视频人才招聘经验的应该都深有 ...

随机推荐

  1. js对象继承

    方法: 1.原型链继承 2.使用对象冒充继承

  2. hadoop对于压缩文件的支持及算法优缺点

    hadoop对于压缩文件的支持及算法优缺点   hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,hadoop能够自动为我们 将压缩的文件解压,而不用我们去关心. 如果 ...

  3. JAVA 静态代码块

    特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数.作用,用于给类进行初始化 /* 静态代码块 格式: static{ 静态代码块中的执行语句 } 特点:随着类的加载而执行,并且只会执行一 ...

  4. Java多线程之Wait()和Notify()

    1.Wait()和Notify.NotifyAll都是Object的方法 2.多线程的协作是通过控制同一个对象的Wait()和Notify()完成 3.当调用Wait()方法时,当前线程进入阻塞状态, ...

  5. Word Frequency

    https://leetcode.com/problems/word-frequency/ Write a bash script to calculate the frequency of each ...

  6. Linux下修改网卡的mac地址

    方法1: # ifconfig ethX down # ifconfig ethX hw ether NEW_MAC_ADDR # ifconfig ethX up 但是这样重启后就失效了,需要再敲一 ...

  7. struts (四) path DMI

    1.path 常使用绝对路径 path = request.getContextPath(); basepath = request.getscheme+"://"+request ...

  8. [ActionScript 3.0] as3.0加载as2.0的swf时获取as2.0的实际舞台尺寸

    var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler) ...

  9. Flex使用宋体渲染越南语显示错误

    本来应该显示Lưu nhóm,偏偏编译后显示Lưu nhòm.二声变成了四声,并且某些情况下,刚打开的窗口时二声的,然后变成了四声.初始以为是Flex的问题,分别使用S和mx包下的Label做实验,后 ...

  10. IOS学习之路-- 指针&宏函数

    如果*p被()包住,说明指针变量p将来指向的是函数 //声明一个指针变量 //int (*p)(int, int) = sum; int (*p)(int, int); p = sum; // 如果* ...