Android IOS WebRTC 音视频开发总结(十七)-- 调试技巧
本文章主要介绍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 音视频开发总结(十七)-- 调试技巧的更多相关文章
- 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)
随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...
- Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会
文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...
- Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验
前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...
- Android IOS WebRTC 音视频开发总结(二四)-- p2p调用堆栈
本文主要分析webrtc音视频点对点部分的代码结构,文章来自博客园RTC.Blacker,转载请说明出处. 前段时间在查一个偶尔断线的问题(这种问题最蛋疼,不好重现,只能凭经验去搞),所以理了下web ...
- Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明
本文主要介绍如何测试基于浏览器和手机的视频通话程序,转载请说明出处,文章来自博客园RTC.Blacker,更多详见www.blackerteam.com 很多人想测试浏览器(包括浏览器版本和桌面e ...
- Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析
本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID ...
- Android IOS WebRTC 音视频开发总结(六十)-- 您为什么招不到适合的音视频人才
本文主要介绍音视频行业招聘现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 有过音视频人才招聘经验的应该都深有 ...
随机推荐
- JadClipse eclipse反编译插件
A.下载JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download,注意选择与eclipse版本一致的版本 ...
- Python标准库05 存储对象 (pickle包,cPickle包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢reverland纠错 在之前对Python对象的介绍中 (面向对象的基本概念 ...
- 利用Hadoop实现超大矩阵相乘之我见(一)
前记 最近,公司一位挺优秀的总务离职,欢送宴上,她对我说“你是一位挺优秀的程序员”,刚说完,立马道歉说“对不起,我说你是程序员是不是侮辱你了?”我挺诧异,程序员现在是很低端,很被人瞧不起的工作吗?或许 ...
- Java实现单向链表的增删改查
class List<T> { private class Node { private T data; private Node next; private Node(T data) { ...
- IGeoDatabaseBridge2.GetLineOfSight
IGeoDatabaseBridge2.GetLineOfSight Method Returns a line-of-site indicator interpolated from the TIN ...
- 在viewPager中的textview参数singleLine和gravity为center冲突bug
在viewPager中有textview. 当textview的参数为singleLine和gravity为center时, onfling事件将会被读取为onclick事件. 这是andriod的一 ...
- docker错误
错误:cannot enable tty mode on non tty input 错误产生: root@machine1:/data# echo test|docker exec -i 68 ...
- How to Modify Public Network Information including VIP in Oracle Clusterware (文档 ID 276434.1)
APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.3 to 12.1.0.2 [Release 11.2 to 12. ...
- php分享表单提交到本页的实例
我们在做表单提交时,一般都要设置表单的action属性,改属性用于指定表单提交到服务器上的哪个页面进行处理,但为空时,表示提交到本页进行处理,即提交给自己.本文章向大家分享表单提交给本页的实例. 实例 ...
- 视差贴图(Parallax Mapping)
使用顶点光照的模型,当模型的面数很少的时候,光照效果会显得很奇怪,因为只有顶点上的光照是正确计算出来的,三角面上的光照都是通过硬件插值得到,所以难免会出现问题.基于像素的光照可以很好的改善这个问题.如 ...