项目背景
客户是一家深耕 IT 职业培训的机构,过去以线下小班授课为主,受疫情与地域限制,希望把课程搬到线上,沉淀可复用的教学资产。机构已有大量录播视频与题库,但缺乏统一的在线学习平台,学员报名、上课、作业、考试分散在多个工具中,体验割裂、数据无法打通。
客户需求
- 课程点播:视频分章节、支持断点续播、倍速与笔记划重点。
- 直播教学:讲师开播、互动答疑、白板共享与课后回放自动生成。
- 作业考试:客观题自动批改、主观题教师批阅,错题本自动归集。
- 学习进度:可视化学习路径、完课证书与学习提醒推送。
- 运营管理:课程上下架、优惠券、分销与学员数据分析看板。
技术方案
平台采用前后端分离架构。前端基于 Vue 构建学员端与讲师端两套界面;后端用 Node.js 提供业务接口,MySQL 存储订单、课程结构等关系数据,MongoDB 存储学习行为日志与笔记等半结构化数据。视频统一转码为 HLS(m3u8)后存放到 OSS,通过 CDN 分发,支持自适应码率。
学习进度跟踪
播放器定时上报观看时长,后端按章节聚合进度,核心进度更新逻辑如下:
// 上报观看进度:每 15 秒一次
async function reportProgress({ userId, courseId, chapterId, position }) {
const key = `progress:${userId}:${chapterId}`;
// 用 Redis 缓存最新进度,降低数据库写压力
await redis.hset(key, { position, updatedAt: Date.now() });
// 触发异步任务:落库 + 计算课程总进度
await mq.publish('progress.sync', { userId, courseId, chapterId, position });
}
直播采用 RTMP 推流 + 服务端转 HLS 分发,学员端延迟约 3-5 秒,满足教学互动;课后自动将直播录制切片为点播回放。完课判定结合观看时长与作业成绩,达标后自动发放电子证书。
教育产品的核心是「完课率」。把进度可视化、加入提醒与证书激励,是提升完课率最直接有效的手段。
实现效果
- 上线半年注册用户突破 3 万,付费转化率 18%。
- 课程平均完课率从 42% 提升至 72%,提升 30 个百分点。
- 单场直播稳定支撑 2000+ 并发,无卡顿投诉。
- 教务人员效率提升,作业批改与数据统计实现自动化。
项目总结
在线教育平台涉及视频流媒体、实时通信、状态追踪与运营后台等多个子系统,是综合性很强的项目。本案例呈现了点播、直播与进度跟踪的核心实现思路。想系统学习相关技术,可参考后端开发教程中的接口设计与数据库知识库中的混合存储方案。