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


     

    前段时间在搞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次,同时寄希望于大神出来帮他直接解决,甚至恨不得别人帮你调试代码,太不现实了,不过你愿意另外花钱买服务又另当别论了,依我的观察来看真正的大牛都是不怎么说话的,基本上都在潜水.

     

    更多经验陆续补充...

  • 相关阅读:
    关于Web应用开发流程的总结
    package.json的所有配置项及其用法,你都熟悉么
    curl 命令行工具的使用及命令参数说明
    pytest插件探索——hook开发
    浅探前端图片优化
    使用Flask构建一个Web应用
    原生的js实现jsonp的跨域封装
    CSS定位之BFC背后的神奇原理
    webview错误
    Android 中的webview
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/3855906.html
Copyright © 2020-2023  润新知