1. 前言
在视频网站或在线学习平台中,用户观看长视频(如课程、电影)时常会中途退出。若再次进入时不得不从头开始,体验大打折扣。视频续播(Resume Playback) 功能可以帮助用户保存上次观看位置,下次打开时自动跳转到该时间点继续观看,大幅提升用户体验。
比如我们常见的 B 站,当你播放中途退出,继续访问这个视频的时候,会提示已为您定位至 XXXX 的提示,如下图:
本文将从为什么要做续播、续播原理、前端实现、后端实现到测试与优化,逐步拆解整个流程,并给出完整代码示例,帮助小伙伴快速在项目中落地该功能。
2. 为什么要做视频续播
在如今的流媒体时代,用户平均每天观看视频时长超过 2.5 小时,但其中可能会出现观看会话会被中断(临时退出、电话、通知、设备切换等)。能否记住播放位置并提供无缝续播体验,已成为衡量视频平台专业度的重要指标!

提升用户体验 用户无需手动记忆上次进度,打开即看 长视频更易于分段观看,提高学习/观影效率
增加平台粘性 优质体验能让用户更愿意再次回访,延长平台使用时长
数据价值挖掘 记录观看进度,可分析用户活跃度、观看习惯,用于个性化推荐
3. 续播功能原理
前端监听
视频播放进度,将当前时间点(currentTime)在用户退出或定时时保存。
存储进度
简易方案:localStorage(针对单设备、单浏览器)
复杂方案:通过 REST 接口将进度保存到后端数据库(支持多设备、多浏览器)
恢复进度
页面加载时,读取存储的进度,将 <video> 的 currentTime 设置为该值
3.1 常见的续播记录系统架构
如上述所说,如果你仅针对单设备、单浏览器,可以直接使用本地存储,但如果需要多设备支持那么就需要有如下规划:

3.2 常见的触发记录时机
前端在出发播放进度记录,常见的有以下几种



