Android IOS WebRTC 音视频开发总结(二六)-- webrtc调用堆栈
2015-04-12 08:41
495 查看
本文主要是自己之前研究WebRTC代码结构时的一些资料(包括Android,iOS,PC),文章来自博客园RTC.Blacker,转载请说明出处。
1、WEBRTC模块:音频数据采集、发送、接收、播放调用过程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/d1dddd857682a9813dd119d2f9614e13.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ce4e6188cc5493ad5c61b66f9f7b61a8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/46416771a2c0970cb72ff272ffe67ccb.png)
2、WEBRTC模块:视频数据采集、发送、接收、播放调用过程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/181d3607c3b5a7bc0829265a5edc40e0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/5d0bc93e31b67c7ab23cda8902927a98.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/18b0f958f95c9f1443fe76e74cc0b22c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/da0a1f7ed07d0864e618495cfc0e409e.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/4b52436bab98cf7cb009d657d483663a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/9510de7f8016575f1d7b3ce292b51895.jpg)
3、libjingle模块:发送、接收数据包调用过程:
3.1、底层包发送(通过注册transport来实现包的发送,逻辑基本上跟之前的一样)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/93311e3b11bb60a4ffe04e03d142dc28.png)
3.2、视频包发送:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/c057297ce41f4e1996e694fd13eb5681.png)
3.3、音频包发送:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/1879c4cf3306126dc8083102339e05a8.png)
3.4、收到视频包:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/26477dff46ab3a18aa5a7162f1600a9b.png)
3.5、收到音频包:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/921083978807eb66aaab976ba6981ff4.png)
4、libjingle模块:ICE连通性检查过程:
4.1、被呼叫者(收到offer)根据remotecandidate创建连接并执行Ping:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/218c9d7b00c9aacfe132104204f9dfea.png)
4.2、呼叫者(发送offer)根据remotecandidate创建连接并执行Ping:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/fbdaf9ca59f93b5a7f499ff840072981.png)
4.3、收到Ping响应,更改连接状态:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/bfff3c9e8e29cda10c93fb9dcecacc09.png)
4.4、将connection标志位可读
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/4aca8cb712ee39cb3511167a9c48f76b.png)
4.5、连接已成功建立,开始收发数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3db7223fed259f4eae08cf155a26ecf2.png)
4.6、AsyncUDPSocket对象创建流程
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/456a4bc09243a741b782d05c7d972298.png)
4.7、transportchannelProxy创建过程
1、WEBRTC模块:音频数据采集、发送、接收、播放调用过程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/d1dddd857682a9813dd119d2f9614e13.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ce4e6188cc5493ad5c61b66f9f7b61a8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/46416771a2c0970cb72ff272ffe67ccb.png)
2、WEBRTC模块:视频数据采集、发送、接收、播放调用过程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/181d3607c3b5a7bc0829265a5edc40e0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/5d0bc93e31b67c7ab23cda8902927a98.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/18b0f958f95c9f1443fe76e74cc0b22c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/da0a1f7ed07d0864e618495cfc0e409e.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/4b52436bab98cf7cb009d657d483663a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/9510de7f8016575f1d7b3ce292b51895.jpg)
3、libjingle模块:发送、接收数据包调用过程:
3.1、底层包发送(通过注册transport来实现包的发送,逻辑基本上跟之前的一样)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/93311e3b11bb60a4ffe04e03d142dc28.png)
3.2、视频包发送:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/c057297ce41f4e1996e694fd13eb5681.png)
3.3、音频包发送:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/1879c4cf3306126dc8083102339e05a8.png)
3.4、收到视频包:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/26477dff46ab3a18aa5a7162f1600a9b.png)
3.5、收到音频包:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/921083978807eb66aaab976ba6981ff4.png)
4、libjingle模块:ICE连通性检查过程:
4.1、被呼叫者(收到offer)根据remotecandidate创建连接并执行Ping:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/218c9d7b00c9aacfe132104204f9dfea.png)
4.2、呼叫者(发送offer)根据remotecandidate创建连接并执行Ping:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/fbdaf9ca59f93b5a7f499ff840072981.png)
4.3、收到Ping响应,更改连接状态:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/bfff3c9e8e29cda10c93fb9dcecacc09.png)
4.4、将connection标志位可读
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/4aca8cb712ee39cb3511167a9c48f76b.png)
4.5、连接已成功建立,开始收发数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3db7223fed259f4eae08cf155a26ecf2.png)
4.6、AsyncUDPSocket对象创建流程
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/456a4bc09243a741b782d05c7d972298.png)
4.7、transportchannelProxy创建过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/c89b0669d3b502d031681d7a6893c81d.png)
相关文章推荐
- Android IOS WebRTC 音视频开发总结(二四)-- p2p调用堆栈
- Android IOS WebRTC 音视频开发总结(十四)-- sip和xmpp异同
- Android IOS WebRTC 音视频开发总结(六)
- Android IOS WebRTC 音视频开发总结(七)-- 基于浏览器的开发
- Android IOS WebRTC 音视频开发总结(八)-- ios上移植webRTCDemo
- Android IOS WebRTC 音视频开发总结(二八)-- 多人视频方案介绍
- Android IOS WebRTC 音视频开发总结(十五)-- 培训课程大纲
- Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式
- Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明
- Android IOS WebRTC 音视频开发总结(七)
- Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002
- Android IOS WebRTC 音视频开发总结(二十)-- 自由职业
- Android IOS WebRTC 音视频开发总结(十七)-- 调试技巧
- Android IOS WebRTC 音视频开发总结(十八)-- 手机适配
- Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题
- Android IOS WebRTC 音视频开发总结(七)
- Android IOS WebRTC 音视频开发总结(六)- iOS注意事项
- Android IOS WebRTC 音视频开发总结(六)
- Android IOS WebRTC 音视频开发总结(二五)-- webrtc相关资源