文章目录

  • 视频断点续播功能实现方案
    • 核心思路
    • 前端实现
      • HTML结构
      • JavaScript实现
    • Spring Boot后端实现
      • 1.依赖配置(pom.xml)
      • 2.实体类
      • 3.存储库接口
      • 4.服务层
      • 5. 控制器
    • 实现要点
    • 视频断点续播功能构思图
    • 流程说明
      • 用户交互:
      • 前端核心功能:
      • 后端处理:
      • 数据存储:

🌐 我的个人网站:乐乐主题创作室

在这里插入图片描述

视频断点续播功能实现方案

核心思路

实现视频断点续播需要前后端配合,主要包括:

  1. 前端记录播放进度
  2. 后端存储进度信息
  3. 视频请求支持范围请求(Range Request)

前端实现

HTML结构

<div class="video-container"><video id="videoPlayer" controls><source src="/api/video/stream?videoId=123" type="video/mp4"></video><div class="video-controls"><span id="currentTime">00:00</span> / <span id="totalTime">00:00</span></div>
</div>

JavaScript实现

const videoPlayer = document.getElementById('videoPlayer');
const videoId = '123'; // 视频ID,实际应从URL或其他地方获取// 页面加载时获取上次播放进度
window.addEventListener('DOMContentLoaded', async () => {try {const response = await fetch(`/api/video/progress?videoId=${videoId}`);const data = await response.json();if (data.lastPosition) {videoPlayer.currentTime = data.lastPosition;}} catch (error) {console.error('获取播放进度失败:', error);}
});// 定期保存播放进度(每5秒)
let progressTimer = null;
videoPlayer.addEventListener('play', () => {progressTimer = setInterval(() => {saveVideoProgress(videoPlayer.currentTime);}, 5000);
});// 暂停和结束时保存进度
videoPlayer.addEventListener('pause', () => {clearInterval(progressTimer);saveVideoProgress(videoPlayer.currentTime);
});videoPlayer.addEventListener('ended', () => {clearInterval(progressTimer);saveVideoProgress(0); // 播放结束,重置进度
});// 保存播放进度到后端
async function saveVideoProgress(currentTime) {try {await fetch('/api/video/progress', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({videoId: videoId,position: currentTime})});} catch (error) {console.error('保存播放进度失败:', error);}
}

Spring Boot后端实现

1.依赖配置(pom.xml)

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

2.实体类

@Entity
@Data
public class VideoProgress {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String userId;private String videoId;private Double position;private LocalDateTime updatedAt;@PrePersist@PreUpdatepublic void prePersist() {updatedAt = LocalDateTime.now();}
}

3.存储库接口

@Repository
public interface VideoProgressRepository extends JpaRepository<VideoProgress, Long> {Optional<VideoProgress> findByUserIdAndVideoId(String userId, String videoId);
}

4.服务层

@Service
@RequiredArgsConstructor
public class VideoService {private final VideoProgressRepository videoProgressRepository;public VideoProgress getVideoProgress(String userId, String videoId) {return videoProgressRepository.findByUserIdAndVideoId(userId, videoId).orElse(new VideoProgress()<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912625.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912625.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912625.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为设备 QoS 流分类与流标记深度解析及实验脚本

一、引言 在复杂网络环境中&#xff0c;不同业务对网络质量需求各异。语音通话要求低时延、视频直播依赖高带宽、普通文件传输对丢包容忍度相对较高 。QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;技术通过流分类、流标记等手段&#xff0c;为不同业务…

[论文阅读] 人工智能 + 软件工程 | 从软件工程视角看大语言模型:挑战与未来之路

从软件工程视角看大语言模型&#xff1a;挑战与未来之路 论文标题&#xff1a;Software Engineering for Large Language Models: Research Status, Challenges and the Road Ahead arXiv:2506.23762 Software Engineering for Large Language Models: Research Status, Chall…

【Docker基础】Docker容器管理:docker rm及其参数详解

目录 1 Docker容器生命周期概述 2 docker rm命令基础 2.1 命令基本语法 2.2 命令功能说明 2.3 基本使用示例 3 docker rm参数详解 3.1 -f, --force 3.2 -v, --volumes 3.3 -l, --link 3.4 --time 4 docker rm高级用法 4.1 批量删除容器 4.1.1 删除所有已停止的容器…

鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(五)

文章大纲 引言一、LiteSession::CompileGraph(Model *model)二、LiteSession::CompileGraph(Model *model) 核心流程1、MindirModel::ConvertTensors1.1、遍历并执行MindirModel::ConvertTensor1.1.1、MindirModel::LoadTensorData 三、LiteSession::InitGraphInputTensors(mod…

WireShark网络取证分析第一集到第五集和dvwa靶场环境分析漏洞

文章目录 一、WireShark网络取证是什么?二、WireShark网络取证1.WireShark网络取证分析第一集Ann的即时通讯好友叫什么名字?在捕获的即时通讯对话中第一条评论是什么?Ann传输的文件叫什么名字?您想提取的文件的魔数是什么(前四个字节)?文件的MD5sum是多少?什么是秘密配方…

【51单片机按下按键1,8位共阴极数码管输出2022-606。按下按键2,8位共阴极数码管输出606-1132。】2022-6-10

缘由单片极的共阴极数码管按下按键1和按键2输出的内容-编程语言-CSDN问答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char Js0, miao…

HDMI转12G- SDI GS12170+GS12281-富利威方案设计及技术支持

GS12281 是一款低功耗、多速率、重定时电缆驱动器&#xff0c;支持高达 12G UHD-SDI 的速率。它设计用于接收 100Ω 差分输入信号&#xff0c;自动从数字视频信号中恢复嵌入式时钟并重新定时输入数据&#xff0c;并通过 75Ω 同轴电缆传输重新定时的信号。 100Ω 走线输入支持…

自然语言处理:NLP入门

本文目录&#xff1a; 一、概念二、发展史三、核心任务和技术特别分享1&#xff1a;当前挑战和前沿方向特别分享2&#xff1a;大神名言启示 前言&#xff1a;从本章开始讲解自然语言处理&#xff08;NLP&#xff09;&#xff0c;今天先入个门~ 一、概念 自然语言处理&#xff…

用Fiddler中文版抓包工具掌控微服务架构中的接口调试:联合Postman与Charles的高效实践

随着微服务架构在项目中的广泛应用&#xff0c;系统被拆分成多个独立的服务&#xff0c;彼此通过API通信。虽然架构带来了灵活性&#xff0c;但也大幅增加了接口数量和调用链复杂度&#xff1a;一次用户操作可能触发跨多个服务的调用&#xff0c;导致前端调试难度飙升。要精准排…

MongoDB 更新文档指南

MongoDB 更新文档指南 引言 MongoDB 是一款高性能、可扩展的文档存储系统&#xff0c;它为存储和管理大量数据提供了强大的支持。在 MongoDB 中&#xff0c;更新文档是常见操作之一&#xff0c;它允许用户修改现有文档的内容。本文将详细讲解 MongoDB 中更新文档的各种方法&a…

Cursor + Serena MCP集成,更好的解析项目架构

项目地址&#xff0c;下到本地。 Serena可以更好的理解项目的架构并总结&#xff0c;而不是简单的阅读代码文件&#xff0c;可以直接用Cursor结合MCP的方式进行使用。&#xff1a;Serena 的语义代码分析功能建立在语言服务器上&#xff0c;使用广泛实施的语言服务器协议&#x…

【Python】numpy数组常用数据处理(测试代码+api例程)

目录 一、数列生成1.按照间隔生成数列&#xff08;np.array[]&#xff09;2.按照数列数字个数生成数列&#xff08;np.linspace&#xff09; 二、数列增删改查1.1 数组末尾添加数据&#xff08;np.append&#xff09;1.2 数组指定索引位置添加数据&#xff08;np.insert&#x…

CMU-15445(6)——PROJECT#2-BPlusTree-Task#1

PROJECT#2-BTree 在 PROJECT#2 中&#xff0c;我们需要实现一个B plus Tree&#xff0c;用过 MySQL 的同学肯定对它不陌生&#xff0c;BTree是实现高效数据检索的核心组件&#xff0c;其内部节点的作用是引导搜索过程&#xff0c;而实际的数据项则存于叶子节点中。该索引结构能…

向量数据库搜索原理解密:从暴力扫描到近似最近邻的演进之路

摘要 向量数据库已成为处理AI时代海量非结构化数据的核心基础设施。本文深入解析向量搜索的六大核心技术原理,涵盖暴力扫描、树结构索引、量化压缩、图导航算法等核心机制,通过10张架构图解与数学公式推导,揭示千万级向量毫秒级检索背后的工程奇迹。全文超5000字,包含Fais…

Yolov7训练自己的数据集和ONNX/TRT部署

Yolov7训练自己的数据集和ONNX/Trt部署 一、环境配置 1.1 项目下载 项目原地址&#xff1a;GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 打开终端&#xff0c;输…

Python - 数据分析三剑客之NumPy

在Python中&#xff0c;NumPy、Pandas和Matplotlib是进行数据分析和数据可视化的三个核心库。它们各自有不同的功能&#xff0c;但经常一起使用来处理和分析数据。 1、NumPy NumPy&#xff08;Numerical Python&#xff09;是一个用于科学计算的库&#xff0c;提供了高性能的…

百度文库智能PPT月访问量超3400万,用户规模翻倍增长

6月27日&#xff0c;极光旗下月狐数据发布《2025年智能PPT行业市场研究报告》。报告显示&#xff0c;智能PPT市场整体增速年同比超50%&#xff0c;市场玩家成倍激增。其中&#xff0c;百度文库智能PPT月访问量超3400万、位列全球第一&#xff0c;市场份额在中国位于断崖式领先。…

远眺科技工业园区数字孪生方案,如何实现智能管理升级?

面对工业园区日益复杂的能耗管控、环境监测、安全运维需求&#xff0c;传统管理模式已经难以为继。而数字孪生技术&#xff0c;正好成为解决上述问题的关键“解药”。本文将以远眺工业园区数字孪生项目为例&#xff0c;为您剖析数字孪生技术如何解决数据孤岛、响应滞后等痛点。…

成都芯谷金融中心文化科技园:打造区域科技活力

在成渝地区双城经济圈建设加速推进的背景下&#xff0c;成都芯谷金融中心文化科技园正以"科技文化金融"的融合创新模式&#xff0c;重塑区域产业生态&#xff0c;成为驱动城市高质量发展的活力源泉。这座总建筑面积达45万平方米的产城综合体&#xff0c;不仅承载着双…

Claude Code 全面指南:从安装到高效开发的实用教程

在 AI 助手逐渐成为开发者标配的今天&#xff0c;Claude Code 作为 Anthropic 推出的一款智能编程工具&#xff0c;凭借其强大的自然语言交互和自动化能力&#xff0c;正迅速改变着软件开发的方式。本文将详细介绍 Claude Code 的功能、安装配置、使用方法及安全与成本管理&…