Android WebRTC 音视频开发总结(五)

Home / Android MrLee 2014-12-25 3738

这些天基于WebRTC做了个 手机视频监控 的程序,分享出来,供想了解这方面内容的朋友参考。

一、基本模块:
1、视频采集端:相当于是客户端,用来采集视频,只需要发送视频,不需要接收。
2、视频监控端:接收采集端传入的视频数据,相当于监控客户端,不需要发送视频数据给客户端。
3、服务端:负责客户端注册、信令控制、数据包转发、UDP打洞等,支持TCP,UDP连接。

二、环境要求:
1、两台Andorid4.0 以上的手机,分别做采集端和监控端。
2、一台PC 做服务端。
3、PC、手机在同一个局域网内。理论上支持公网,但现在还没有去测试。

三、安装方式:
1、在PC上运行VideoMonitor.exe,启动服务端。
2、安装-> 视频采集.apk,运行->打开,输入服务端IP即可正常运行。
3、安装-> 视频监控.apk,运行->打开,输入服务端IP,提示登录成功后,点击确定。
4、以上三步操作完成后,等待一小会,即可从监控段看到采集端的图像。
四、:拓展
1. IOS WebRTC音视频编译和下载: 有过android WEBRTC编译下载经验再去弄IOS,你会发现简单多了,再有问题,可以参考:http://www.cnblogs.com/ProbeStar/p/3411510.html 记住有MAC和IOS两个版本,要指定好你想要哪个版本.

2. 正确区分armv7 armv7s i386平台: 编译的时候特别容易碰到找不到armv7 .a文件之类的错误, 不了解的人会一头雾水,其实这是因为每个Target编译的时候都可以生成不同的平台,ARMV7,ARMV7S是给手机用的,I386是给MAC和模拟器用的,明白了这一点你就很容易解决这一类问题了.

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

4. 调试webrtc代码: android上面就只能通过LOG了,但IOS很方便,object c. c. c++相互调用(这个有点让我一眼就喜欢上了Xcode),同时编译成DEBUG版本,就直接进入.a文件里面调试了,windows上同样的道理.

5. 原理都是一样的: 虽然WEBRTC有针对Windows,MAC,Android,IOS的版本,但他们原理都是一样的,主要就是表现形式不一样,所以你如果弄懂了一套再去弄另一套就比较容易了,了解过设计模式的人会发现针对这同不同平台的处理,他里面大量采用了模板模式和工厂模式,如数据发送,udp_socket_xxx.h

6. 图像显示不了或一方有图像另一方没有图像: 这种问题原因很多,首先你得通过抓包看ARtp,ARtcp,VRtp,VRtcp端口收发数据是否正常,其次再通过调试或设置断点来观察数据包有没有被丢弃或者有没有被正确解码,前两天刚解决一个因为KeyFrame(WEBRTC里面有KeyFrame,DeltaFrame分别表示是完整图像还是差异图像)没有正常发送导致收不到数据的问题.

7. ios上编译出来的.a文件不是armv7或armv7s问题,选择选择真机才能编译出这中architecture,否则编译出来的都是i386.

8. RTP RTCP RTSP的区别:RTP RTCP是传输层协议,RTSP是应用层协议,类似http。

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

本文链接:https://www.it72.com/504.htm

推荐阅读
最新回复 (0)
返回