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

1. IOS WebRTC音视频编译和下载: 有过android WEBRTC编译下载经验再去弄IOS,你会发现简单多了,再有问题,可参考:

1.1、http://www.cnblogs.com/ProbeStar/p/3411510.html  记住有MAC和IOS两个版本,要指定好你想要哪个版本.

1.2、webrtc ios不支持直接用xcode编译,他给出的解决方案:通过xcode调用ninja,通过ninja编译,跟命令行一样的效果,不过调试方便多了。

2. 正确区分armv7 armv7s i386平台,ios开发编译的时候经常会碰碰到找不到armv7 .a文件之类的错误:

2.1、armv7,armv7s,amd64是真机用的,i386是模拟器用的,明白了这一点对你解决类似问题很有帮助。

2.2、查看.a文件架构的命令:lipo -info libwebrtc.a

2.3、合并.a文件的命令:lipo -create lib.armv7.a lib.arm64.a -output lib.a

2.4、合并不同.a文件的命令:libtool -static -o dest.a lib*.a; strip -S -x -o dest2.a -r dest.a;

2.5、webrtc现已支持arm64(我已经编译成功了),这也是响应苹果商店上架审核要求,详见:https://developer.apple.com/news

3. 正确区分.m和.mm文件:

3.1、有一次编译出现一个奇怪的问题,提示找不到string.h文件,折腾了半天都没搞定,很纳闷这文件不是系统自带的吗?后来才发现是自己.m文件里面调用了C++代码造成的,解决方式就是将.m改成.mm。

4. webrtc iOS开发与调试:

4.1、调试webrtc在Android基本上都是通过日志(后面会写到怎么加日志),但i可将代码加进去调试,为苹果点赞,VS还没做这么好。

4.2、xcode里面object c. c. c++代码可以相互调用,好强,这个优点让我一眼就喜欢上了Xcode,

5. 代码架构都是一样的,所以弄懂了一套再去弄另一套就比较容易了,不过如果不熟悉另一个平台开发则还是要点成本的:

5.1、讲设计模式的书很多,其实优秀源代码就是最好的书籍,webrtc代码就是一本介绍涉及模式的优秀书籍,如工厂模式,模版模式。

5.2、有些模的具体实现还是有些不一样的,如音频设备操作在android上用的是opensles,苹果上就不是这么搞的。

6. 视频的时候图像显示不了或一方有图像另一方没有图像,具体原因很多:

6.1、首先你得通过抓包查看收发数据是否正常,其次逻辑判断找出可能出问题的模块,最后通过调试或设置断点来具体查找。

6.2、理清视频图像捕获、处理、编码、发送、接收、解码、显示、验证这个逻辑对你处理类似问题有很大帮助,后面会整理流程图。

6.3、开始视频前会先发送KeyFrame(KeyFrame和DeltaFrame分别表示是完整图像还是差异图像), KeyFrame间隔可自定义.

6.4、 很多人容易混淆RTP RTCP RTSP:RTP RTCP是传输层协议,RTSP是应用层协议,类似http。

最后:关于问别人问题,发现很多新手在一些群里问的问题要么很泛,要么别人已经回答了N次,同时寄希望于大神出来帮他直接解决,甚至恨不得别人帮你调试代码,太不现实了,不过你愿意另外花钱买服务又另当别论了,依我的观察来看真正的大牛都是不怎么说话的,基本上都在潜水.

更多经验陆续补充...

Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验的更多相关文章

  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 音视频开发总结(二四)-- p2p调用堆栈

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

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

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

  7. Android IOS WebRTC 音视频开发总结(八十六)-- WebRTC中RTP/RTCP协议实现分析

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

  8. Android IOS WebRTC 音视频开发总结(六四)-- webrtc能走多远我不知道,但这个市场真实存在

    本文主要总结目前都有哪些使用场景用到webrtc,文章最早发表在我们的微信公众号上,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com webrtc只 ...

  9. Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状

    本文主要介绍国外实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 上篇文章我们采用百度搜索指数来分 ...

随机推荐

  1. 查看iis错误日志时提示找不到 freb.xsl的解决方法

    http://stackoverflow.com/questions/786638/how-can-i-get-gzip-compression-in-iis7-working/787251 Look ...

  2. 转-TabHost组件(二)(实现底部菜单导航)

    http://www.cnblogs.com/lichenwei/p/3975095.html 上面文章<安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航)>中提到了利用自定 ...

  3. Ubuntu查看磁盘空间命令(转载)

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  4. ios6和ios7禁止屏幕旋转

    ios6和ios7禁止屏幕旋转 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOr ...

  5. shell 外部传入jmeter脚本线程数,rampUp时间,持续运行时间

    jmeter参数化部分参考上一篇 shell参数说明:$1线程数,$2:全部并发数rampup时间,$3:脚本持续运行时间,$4:每次脚本循环持续时间 $5:所以循环持续时间 #!/bin/bash ...

  6. nyoj 97 兄弟郊游问题

    点击打开链接 兄弟郊游问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发.以每分钟Y米的速度去追弟弟 ...

  7. 编译redis

    apt-get install gcc tcl make MALLOC=libc

  8. 基于RBAC模型的通用企业权限管理系统

    1. 为什么我们需要基于RBAC模型的通用企业权限管理系统 管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁.构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的.权限 ...

  9. unique踢出相同元素

    unique函数的功能是:去除相邻的重复元素(只保留一个). 函数参数:unique(first,last,compare); //first为容器的首迭代器,last为容器的末迭代器,compare ...

  10. Bootstrap 3 How-To #3 布局

    对于 Web 开发来说,一个永远的话题是如何创建一个跨浏览器兼容的布局.许多年来,各种框架使用各种技术来解决这个问题.Bootstrap 使用了一个不同的方式来解决这个问题.基于 960 像素的布局 ...