前段时间在搞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. Introduction to ASP.NET Web Programming Using the Razor Syntax (C#)

    1, http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c 2, Introduction ...

  2. Yii 发送电子邮件

    yii 收发邮件 ------------------------------------------------------------------------------------------- ...

  3. python argparse模块解析命令行选项简单使用

    argparse模块的解析命令行选项简单使用 util.py #!/usr/bin/env python # coding=utf-8 import argparse parser = argpars ...

  4. vim扩展配置

    在用户根目录下新建 “.vimrc”文件,键入一下代码: set syntax=on "高亮语法 set fenc=utf- "设定默认解码 set fencs=utf-,usc- ...

  5. 一步步教你如何把电脑设置U盘启动(图解教程)

    一.我们先来说说如何进入 BIOS设置程序: 在开机时按下特定的热键可以进入BIOS设置程序,不同类型的机器进入BIOS设置程序的按键不同,有的在屏幕上给出提示,有的不给出提示,几种常见的BIOS设置 ...

  6. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

  7. 如何正确地使用Python的属性和描述符

    关于@property装饰器 在Python中我们使用@property装饰器来把对函数的调用伪装成对属性的访问. 那么为什么要这样做呢?因为@property让我们将自定义的代码同变量的访问/设定联 ...

  8. poj 2388 Who's in the Middle

    点击打开链接 Who's in the Middle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28324   Acce ...

  9. JAVA设计模式之依赖倒转原则

    3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是 ...

  10. Android——Gallery 图片拖动效果

    1.XML文件 <?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android=&q ...