TutorABC 董海冰:Golang + WebRTC 搭建实时音视频云实践

TutorABC研发总监董海冰分享了使用Golang构建实时音视频云平台TutorMeet+的经验。该系统采用WebRTC技术,支持实时交互和多种教学形式。选择Golang是因为其并发特性、高性能和良好的工程特性,能够有效提高开发效率。演讲还涉及了WebRTC的原理、开源项目和面临的问题及其解决方案。
摘要由CSDN通过智能技术生成

在 2019年第五届 Gopher China 大会上,

TutorABC研发总监董海冰进行了题为《 用Golang搭建实时音视频云》的演讲。主要内容如下:

  • 什么是TutorMeet+

  • 为什么使用Golang

  • WebRTC

  • 问题总结

  • 关于SaaS

以下为演讲实录。

No.1

什么是TutorMeet+

大家好,非常高兴来到 Gopher  China 分享一下我们用 Go 语言做的事情。可能这个领域稍微有一点特殊,我准备的内容蛮多的。主要还是跟大家讲一下我们实时交互的研发过程和为什么采用 Go 语言,还有关于我们采用了 WebRTC,以及两年多的研发过程中都遇到了什么问题,怎么处理的,最后是 SaaS 方面的东西。

先问一下大家,你们自己或者说你们的家人有没有使用过在线教育的产品?特别有小孩子,近些年大家对于在线教育越来越熟悉,实时的音视频教育已经基本走入千家万户。我这张图是一个典型在线教育的场景。左边是老师,右上角是学生,学生对于我们公司来说,既包括低龄段K12学生还有成人学生,甚至平台上有超过80岁的老人也一直在坚持学习。当然还有一些其他的角色,包括老师给学生上课的时候会有教材,教材实际上我们有专门的教研部门由他们负责编写。对于低龄端学生要有家长参与,我们提供一个比较好的家长端,这样家长可以在不在场情况下也能够监督自己孩子上课的情况。即使课上完了,他也可以比较方便的“回看“上课的录像,看学生当时的学习的情形。

 我们“TutorMeet+“是一套可以实时互动的教学系统。这是我们整个系统的界面,后面是老师端,前面是学生端。显示区域主要的部分是课件,也就是俗称”白板“的区域,左侧是视频区,这块采用了WebRTC的技术。白板也是很重要交互的手段,目前在线教育发展越来越快,越来越多采用动态白板,有一些项目我们采用了 Html5 可以实时互动的白板,可以生成动画,对于低幼学生体验会更好。

640?wx_fmt=png

 对于教育来说,有两点非常重要,一个是学习的效果,另一个是学习的效率,其实作为商业的再教育的产品,如果不能够帮学生强化学习效果,或者说能帮他在学习过程中节省时间,那么这样的产品是没有太大的意义。因为大部分学习资料都是可以免费找到。我们主要还是满足用户这两点核心需求。

640?wx_fmt=png

整个系统平台我们后端基本都是采用 Go 语言开发的。当然有一些地方用了 C++,还有 C 语言。前端我们用的是 ReactJS,我们界面大家已经看到了,音视频是在左侧,有一些是在头部,还有一些是右侧,这个差别不大,因为我们主要是采用H5比较灵活的方式布局,怎么调整都可以,没有什么一定规矩,只是我们在教学过程中,觉得放在这个部分焦点、视点比较理想,其实可以做一些定制,这方面我们是足够灵活的。我们整个UI层变动起来会比较敏捷一些,也比较高效。

视频我们早期采用VP8,不过后来逐步转成H264为主,因为H264有很多好处,特别是在移动端硬件设备的支持上会比较好,支持硬解,也比较方便。还有比较大的好处就是,作为在线学习的场景,我们在服务端肯定有录制的功能,如果用H264很容易转成MP4了,H264作为通用格式,不需要转码,用VP8肯定要重新做一些转码、适配的工作。

我们去年快速上线的阶段统计过,每天会发布30几次,所以整体还是非常快速的一个迭代的节奏。我们采用的是混合云的方式,混合云一方面我们有自建机房,然后有比较长时间的全球的项目运维的经验,我们有一个GIS的部门,他们采购了很多国外的节点和机房,都是用最好的资源,所以能够保证我们整体的线路是非常稳定的。我们也有一些比较好的公有云合作伙伴,像阿里云,也建立了比较好的互动关系,利用阿里云可以弹性扩容的优势,实现了比如说开学季,上课人数较多,特别是在Peak Time上课量大规模增加,这个时候我们不用等自己采购硬件服务器,而是采用公有云的ECS,可以迅速地的做一些弹性的扩充。另外,还有一些高IO的服务,需要更多CPU资源的情况下的服务,做更加灵活和及时性的弹性扩展。

从教学形式上我们支持

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值