核心概念
要明确一个关键点:Java 是运行在服务器端的编程语言,而网页(HTML, CSS, JavaScript)是运行在客户端(浏览器)的。

Java 的作用通常是:
- 后端处理:处理用户登录、视频上传、权限控制、数据库存储等。
- 提供视频文件:通过服务器(如 Tomcat, Jetty)将视频文件(如 .mp4, .webm)发送给浏览器。
- 动态生成网页:使用模板引擎(如 Thymeleaf, FreeMarker)将视频播放器的 HTML 代码动态嵌入到返回给浏览器的页面中。
而真正的视频播放器,是由浏览器根据 HTML 中的 <video> 标签和相关的 JavaScript/CSS 来渲染和控制的。
使用 HTML5 的 <video> 标签(推荐)
这是目前最标准、最推荐的方式,它不依赖于任何外部插件,所有现代浏览器都支持,Java 的职责就是提供一个包含 <video> 标签的 HTML 页面。
HTML 结构
你可以在 HTML 中直接使用 假设你使用的是 Spring Boot 框架,你需要做两件事: 项目结构: VideoController.java video_player.html (使用 Thymeleaf 模板引擎) 当你访问 虽然 HTML5 这些库基于 HTML5 引入 CSS 和 JavaScript
在你的 HTML 页面的 Java 后端实现
Java 后端的实现与方案一完全相同,你只需要确保能正确地将这个 HTML 页面返回给浏览器,并且视频文件的路径 ( 在 HTML5 出现之前,开发者有时会使用 Java Applet 在网页中嵌入一个基于 Java 的播放器,用户需要先安装 Java 插件到浏览器中。 ⚠️ 重要警告:这种方法已经完全过时! 除非你在维护一个非常古老且无法升级的系统,否则绝对不要使用 Applet。 对于任何新的 Java Web 项目,请遵循以下最佳实践: 后端 (Java): 前端 (HTML/JS): 这样,你就能利用 Java 的强大后端能力,结合现代 Web 技术,构建出稳定、高效且用户体验良好的网页视频播放功能。<video>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">HTML5 视频播放器</title>
<style>
/* 简单的样式美化 */
video {
width: 80%;
max-width: 800px;
display: block;
margin: 20px auto;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<h1>我的视频播放器</h1>
<video controls>
<!--
src: 视频文件的路径
controls: 显示播放器控件(播放/暂停、进度条、音量等)
-->
<source src="/videos/sample.mp4" type="video/mp4">
<!--
提供多种格式以提高兼容性
<source src="/videos/sample.webm" type="video/webm">
<source src="/videos/sample.ogv" type="video/ogg">
-->
<!-- 如果浏览器不支持 video 标签,则显示此内容 -->
您的浏览器不支持 HTML5 视频。
</video>
</body>
</html>
Java 后端实现 (以 Spring Boot 为例)

src/main/resources/static/videos/ 目录下。src/main/java/
└── com/
└── example/
└── demo/
└── DemoApplication.java
└── controller/
└── VideoController.java
src/main/resources/
└── static/
└── videos/
└── sample.mp4 <-- 你的视频文件放在这里
└── templates/
└── video_player.html <-- 我们把上面的 HTML 代码放这里package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class VideoController {
@GetMapping("/video-page")
public String showVideoPage() {
// 返回 Thymeleaf 模板的名称
// Spring Boot 会自动在 src/main/resources/templates/ 目录下查找 video_player.html
return "video_player";
}
}
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">HTML5 视频播放器</title>
<style>
video {
width: 80%;
max-width: 800px;
display: block;
margin: 20px auto;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<h1>我的视频播放器</h1>
<!--
Thymeleaf 可以从静态资源目录中引用文件
@{/videos/sample.mp4} 会自动映射到 /videos/sample.mp4
-->
<video controls>
<source th:src="@{/videos/sample.mp4}" type="video/mp4">
您的浏览器不支持 HTML5 视频。
</video>
</body>
</html>
http://localhost:8080/video-page 时,就能看到一个功能完整的视频播放器了。
使用第三方 JavaScript 视频播放器库
<video> 标签功能强大,但它的外观和功能在不同浏览器中可能略有差异,为了获得更一致、更美观、功能更丰富的体验,开发者通常会使用第三方 JavaScript 播放器库。<video> 标签,并用 JavaScript 和 CSS 进行了封装和增强。流行的库推荐:
实现示例:使用 Video.js
<head> 中引入 Video.js 的 CSS,在 <body> 底部引入 JS。<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">Video.js 播放器示例</title>
<!-- 引入 Video.js 的 CSS -->
<link href="https://vjs.zencdn.net/8.6.1/video-js.css" rel="stylesheet" />
<style>
body {
background-color: #f0f0f0;
text-align: center;
padding-top: 40px;
}
/* 自定义播放器大小 */
.video-js {
width: 800px;
height: 450px;
}
</style>
</head>
<body>
<h1>使用 Video.js 的播放器</h1>
<!--
data-setup="{}" 用于初始化播放器的一些默认配置
class="video-js vjs-default-skin" 是 Video.js 的必要类
-->
<video
id="my-video"
class="video-js vjs-default-skin"
controls
preload="auto"
width="640"
height="264"
poster="MY_VIDEO_POSTER.jpg" <!-- 视频封面图 -->
data-setup="{}"
>
<source src="/videos/sample.mp4" type="video/mp4">
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank">
supports HTML5 video
</a>.
</p>
</video>
<!-- 引入 Video.js 的 JavaScript -->
<script src="https://vjs.zencdn.net/8.6.1/video.min.js"></script>
</body>
</html>
/videos/sample.mp4) 是可访问的。
使用 Java Applet(已过时,不推荐)
总结与对比
方案
优点
缺点
推荐度
HTML5
<video>标准、无需插件、性能好、轻量
外观和功能在不同浏览器中略有差异
⭐⭐⭐⭐⭐ (首选)
第三方 JS 库 (如 Video.js)
外观统一、功能丰富、高度可定制、跨浏览器体验一致
需要引入额外的 JS/CSS 文件
⭐⭐⭐⭐ (对体验有高要求时)
Java Applet
可以使用 Java 的完整功能
已过时、有安全风险、性能差、依赖插件
⭐ (不推荐,仅用于维护旧系统)
最终建议
video/mp4)。
<video> 标签,它足够强大且简单。
