#嘿丝儿科技#一人单刷雨课堂需要多少工作量?快手工程师详解如何两周搞定( 四 )


这里不考虑实现效果的话 , 用最简单的opengl渲染视频 , 大概2天 。
#嘿丝儿科技#一人单刷雨课堂需要多少工作量?快手工程师详解如何两周搞定
文章图片
这样 , 一个简简单单的实时音视频通信的终端部分就开发完了 , 再配上一个炫酷拉风的界面 , 就可以食用了 。 但是这里只能实现两个人之间的通信 , 而在线授课的场景可是一个老师对一群学生 。 如何实现多人之间的实时通信呢?这就需要后端的媒体服务器作中转来实现 。
媒体后端
这里需要简单介绍一下多人实时音视频通信的网络拓扑结构 。 对于三人以上的实时通信 , 由于接收端同时会接收多个人传过来的音视频数据 , 因此如果没有服务器中转的话 , 需要采用网状拓扑结构 , 每个终端的音视频流都需要同时发送给其他所有终端 , 网络带宽成倍增加 。 为了解决这个问题 , 就需要采用星型拓扑结构 , 所有的终端将自己的音视频数据发送给中央服务器 , 再由服务器来做转发 。 这个服务器就是视频会议的后端 , 暨媒体服务器 。
媒体服务器的实现方式有两种 。 一种叫做MCU模式 , 一种叫SFU模式 。
MCU模式是服务器将所有人的音视频数据在服务端进行解码 , 然后合成为一个新的音视频流 。 这个视频流是由所有人的视频组合出来的 , 而音频则是将所有人的音频混合 , 之后重新进行音视频编码 , 再发送给所有终端 。 这样终端播放出来的音视频流就是一个合并好的音视频流 。 这种模式对于媒体服务器的性能消耗很大 , 因此一台服务器并不能支持很多的终端 。
SFU模式则只是做RTP包的转发 , 并不做解码和合流的工作 。 每个终端同时会接收到多个人的音视频流 , 每一组音视频流需要独立进行处理和解码 , 然后在本地混合后播放出来 。 这种模式的SFU性能消耗比较低 , 能够支持的并发很高 。
如果不考虑高并发和架构设计 , 最简单的实现大概3天 。
#嘿丝儿科技#一人单刷雨课堂需要多少工作量?快手工程师详解如何两周搞定
文章图片
把这样一个媒体服务器部署到网络上 , 然后由它来转发所有终端的音视频数据包 , 这样就可以实现多人之间的音视频通信了 。
总共需要2周开发时间 , 一个最最简单的雷课堂就实现完成了 。
当然 , 这里只是为了完成作业从功能角度来实现 。 在实际项目中 , 需要考虑到性能和架构优化 , 增强稳定性和音视频质量 , 服务端高并发和快速部署 , 各种算法参数调优和策略优化 。 没有几十人团队精细打磨2-3年 , 以及专业的音视频质量测试实验室 , 不可能做到业界顶尖水准 。
快手与雨课堂
为什么快手对于雨课堂这么熟悉?2月11日 , 这家公司成为了清华大学慕课平台「学堂在线」的独家直播技术合作平台 , 致力于以直播技术驱动优质教育课程更广更快传播 。 学堂在线旗下的雨课堂现在同时服务国内500所高校线上授课 , 涵盖国内90%的985及211高校 。
在疫情期间 , 全国大学有超过100万堂课在雨课堂开课 , 近4000万的大学生都在这里上课 , 其中在武汉地区开播14000次 。 快手的直播技术给这些线上的课程提供技术支持 , 让老师和学生们在线上开展教学时有良好的音视频体验 。
#嘿丝儿科技#一人单刷雨课堂需要多少工作量?快手工程师详解如何两周搞定
文章图片
快手通过自身在直播平台长期的技术积累 , 在推流工具、拥塞控制算法、智能CDN分发、质量监控、后端服务基础架构等全链路对雨课堂进行了技术支持 , 确保了雨课堂大规模同时开课的稳定性和流畅度 。


推荐阅读