文章目录

  • 通信方式
  • STUN 与 TURN 服务
  • 信令系统
  • 处理架构

做音视频聊天是一件有趣的事,因为你可以有机会去学到很多其它领域的东西。Cable Messenger 的音视频聊天主要采用Google的Webrtc库,以及搭配我们自己开发的一套“信令系统”实现。

对于Webrtc源码的学习和研究,一直会是一件十分振奋人心的事情。很多在接Webrtc库时,对他内部到底做了什么操作的这些疑问,以及很多技术细节,包括穿透的整个细节过程是怎么处理的等等问题将会得到答案。当然由于项目太多,时间关系,一直没有时间进行很深入的学习,以后有机会会认真学习一下,并专门写一下对于学习源码方面的心得。

通信方式

好吧,我们最熟悉不过的通信方式恐怕是TCP协议,HTTP协议,以及UDP协议了吧。音视频聊天一般比较常用的协议是TCP及UDP。但TCP基于其内部的特点及复杂的机制,其在带宽的利用率以及性能上,恐怕是不能和UDP相比的。连接前后的多次握手,对发送的数据进行分包后按顺序发送,接收者的回复印机制,丢包重传,数据校验,流量控制等等机制是UDP协议所没有的。就是因为这些逻辑的存在,TCP才被大家所认为是相对可靠的传输方式。但可靠性的实现往往需要牺牲性能作为代价。

UDP协议,恐怕大家很少用。小弟很久以前,在做会议投屏项目中曾经采用过,当时也只是基于内网环境进行使用,所以

Cable Messenger 多人实时音视频聊天:系统架构相关推荐

  1. Cable Messenger 多人实时音视频聊天:信令系统

    文章目录 一般流程 信令的发送和接收 信令的上层处理逻辑 多人聊天的信令扩散算法 信令系统,作为音视频聊天中最必不可少的系统,承担着房间管理,用户管理,状态管理,聊天前用户间信息交互等重要功能.没有信 ...

  2. 多人实时音视频聊天架构探讨

    前言 移动互联网发展迅猛,目前实时音视频技术已被广泛地应用在了实时在线教育.智能家居.在线直播.安防监控等领域.这之中,诸如多人视频会议.在线实时视频教育等场景,跟传统的一对一实时音视频聊天,在技术架 ...

  3. 浅析即时通讯音视频开发多人实时音视频聊天架构

    移动互联网发展迅猛,目前实时音视频技术已被广泛地应用在了实时在线教育.智能家居.在线直播.安防监控等领域.这之中,诸如多人视频会议.在线实时视频教育等场景,跟传统的一对一实时音视频聊天,在技术架构的实 ...

  4. 实时音视频聊天中超低延迟架构的思考与技术实践

    1.前言 从直播在线上抓娃娃,不断变化的是玩法的创新,始终不变的是对超低延迟的苛求.实时架构是超低延迟的基石,如何在信源编码.信道编码和实时传输整个链条来构建实时架构?在实时架构的基础之上,如果通过优 ...

  5. 微信团队分享:微信每日亿次实时音视频聊天背后的技术解密

    本文内容整理自腾讯专家研究员 & 微信视频技术负责人谷沉沉在 2017 ArchSummit 全球架构师峰会上的技术分享. 1.前言 2012 年 7 月,微信 4.2 版本首次加入了实时音视 ...

  6. 实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器

    本文整理自声网Agora.io编解码算法工匠高泽华在RTC2017实时互联网大会和QCon上海2017上的技术分享.本文仅讨论技术,无关商业因素,请从技术角度理解文中的分享内容即可,如给您带来误导,请 ...

  7. 如何实现实时音视频聊天功能

    众所周之,实时音视频聊天技术门槛很高,一般的公司要想在短时间内从零补齐这方面的技术短板相当困难,而开源音视频工程WebRTC提供了这样一个捷径(包括笔者公司的产品在内,同样是基于WebRTC技术才得以 ...

  8. 如何使用Intel CS for WebRTC 快速搭建实时音视频通讯系统

    如何使用Intel CS for WebRTC 快速搭建实时音视频通讯系统 Intel CS for WebRTC是一套完整的WebRTC的通讯架构套件,包括了服务端软件和客户端SDK,其中客户端SD ...

  9. 实时音视频聊天中的延时问题一篇就够

    1.前言 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现不同应用场景重点额音视频 ...

最新文章

  1. 如何正确连接数据库???
  2. bzoj1669[Usaco2006 Oct]Hungry Cows饥饿的奶牛*
  3. mysql 返回最大值列名_多列求最大值列和列名
  4. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | InMemoryDexClassLoader 类加载器脱壳点总结 )
  5. 老男孩教育Python 9期第一课练习题答案
  6. linux shell脚本:通过API实现git仓库从gitee向gitlab的批量迁移(gitlab api)
  7. java从键盘输入一组数据,输出其最大值,平均值,最小值没法输出
  8. 【计算机科学基础】电子计算机抽象层次
  9. 缓存层设计套路(一)
  10. BZOJ1095: [ZJOI2007]Hide 捉迷藏(动态点分治)
  11. 资深码农:拿下软件测试,只需掌握好这两种方法!
  12. java 数据库mysql_java是怎么连接mysql数据库的
  13. 对计算机组装和维护课的总结,计算机组装与维护教师工作总结
  14. python redis list_Python redis list列表操作
  15. 在linux系统下安装redis
  16. DataTable序列化为JSON字符串
  17. 好的医疗器械管理软件应该具备哪些功能?
  18. 档案计算机管理软件,档案管理软件系统
  19. Eclipse快捷方式无法在桌面上打开
  20. 经典之打印沙漏-数学分析-C/C++

热门文章

  1. C#使用SqlConnection的事务SqlTransaction
  2. 三国战记,微软Windows phone,谷歌android,苹果iOS,手机云计算云服务三国混战
  3. 网格布局-display:grid
  4. (转)通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证
  5. 比较有意义英文文本和随机字母串的平均符号熵
  6. FileSystemWatcher判断文件复制完成
  7. javaweb的学习
  8. 利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)
  9. ___71__OleDbDataReader读取Access数据库
  10. 【软考】—计算机硬件基础