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

在 2019年第五届 Gopher China 大会上,TutorABC研发总监董海冰进行了题为《 用Golang搭建实时音视频云》的演讲。主要内容如下:什么是Tutor...
摘要由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资源的情况下的服务,做更加灵活和及时性的弹性扩展。

从教学形式上我们支持一对一

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用MATLAB绘制海冰,需要先获取海冰数据。海冰数据通常包含海冰厚度、海冰面积或者海冰边界等信息。可以从气象或海洋研究机构获取这些数据,或者使用已有的公开数据集。获取数据后,可以按照以下步骤使用MATLAB绘制海冰: 1. 读取海冰数据:使用MATLAB的文件读取函数,如`xlsread`或`importdata`,读取海冰数据文件。确保将数据正确导入到MATLAB工作空间中。 2. 数据预处理:根据需要,对数据进行预处理。如果需要绘制特定时间范围内的海冰情况,可以选择该时间范围内的数据。如果数据存在缺失值或异常值,可以进行数据清洗或处理。 3. 绘制海冰图:使用MATLAB的绘图函数,如`imshow`、`pcolor`或`contourf`绘制海冰图像。根据数据的格式和内容,选择合适的绘图函数。可以将海冰数据映射为颜色或灰度值来表示不同的海冰厚度或面积。 4. 添加其他信息:根据需要,可以添加其他信息到海冰图中,如地理坐标轴、海岸线、颜色标尺等。MATLAB提供了丰富的图形处理函数和工具箱,可以方便地在图中添加和编辑元素。 5. 保存和导出图像:使用MATLAB的保存图像函数,如`saveas`或`exportgraphics`将绘制的海冰图保存为图片文件,如JPEG、PNG或PDF格式,以便后续使用或分享。 以上是绘制海冰图的基本步骤。具体的代码实现需要根据海冰数据的格式和要求进行调整和补充。在编写代码时,可以参考MATLAB的文档和示例以及相关的绘图函数的用法和参数设置。完成代码后,可以运行并调试代码,根据需要对图像进行优化和美化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值