【发布时间】:2016-03-10 08:19:29
【问题描述】:
我有两个播放 mp4 视频的项目
- 纯 html(静态 html 文件)
- Spring MVC 应用程序。 以上两个项目都部署在 Tomcat 8 中。
当我使用以下 URL 访问 html 项目时:
http://localhost:8080/videoplayer/index.html
页面打开并播放 mp4 视频。另外,我可以向前/向后搜索视频。
我已将上述 index.html 页面的相同内容添加到 spring mvc jsp 中。 当我访问那个 index.jsp 时,
页面打开并播放视频。 但是,我无法向前/向后寻找。此外,单击视频搜索栏会从头开始播放视频
注意:在 Spring MVC 中,我已将视频添加为资源。
下面是资源配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/vids/**").addResourceLocations("/WEB-INF/resources/vids/");
}
控制器方法:
以下方法用于提供有视频的页面:
@RequestMapping(value = "/play", method = RequestMethod.GET)
public String playvideo() {
return "index";
}
但是,即使我直接在浏览器中点击视频资源 url,我也无法通过视频进行搜索。
http://localhost:8080/tkh/resources/vids/cars.mp4
当我检查两个应用程序中的请求和标头时,chrome 显示如下:
1. HTML 项目
对于 html 项目,http 状态码是 206
2。 Spring MVC 项目
对于 spring 项目,http 状态码是 200
下面是html/jsp代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="resources/media/mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="resources/media/style.css" media="screen">
<style type="text/css">
html, body { margin: 0; padding: 0; }
body { background: #f2f2f2 ; padding-top: 265px; }
.mejs-container { margin: 0 auto; }
</style>
<meta name="robots" content="noindex,follow" />
</head>
<body>
<video width="640" height="267" controls="controls" autobuffer="true" poster="resources/vids/cars.png">
<source src="resources/vids/cars.mp4" type="video/mp4">
</video>
<script>
$(document).ready(function() {
$('video, audio').mediaelementplayer();
$('video').mediaelementplayer({
alwaysShowControls: true,
videoVolume: 'horizontal',
features: ['playpause','progress','volume','fullscreen']
});
});
</script>
</body>
</html>
我了解 206 状态码是针对部分内容的。但是为什么 spring mvc 应用程序发送 200 状态而不是 206 呢?
我真的不确定为什么具有相同代码的页面会这样?
【问题讨论】:
-
206 状态完全正常,因为您的播放器正在请求具有给定字节范围的媒体(标题范围:字节=2161242-)。因此,您的服务器以 206 响应。当您直接访问媒体时,请求不包含范围。
-
但是 MVC 应用程序给出 200 状态。而且我没有直接访问。
-
MVC应用是什么意思?
-
我的意思是它是一个 Spring mvc 应用程序,我在上面的图像 #2 中收到 200 的请求 url 响应
-
“html 项目”是什么意思(使用 http 服务器提供静态文件?)。您使用的是哪个 Spring 版本?您如何提供该 mp4 文件(Spring 资源处理?控制器?应用程序中的默认 servlet?)。向我们展示一些服务器代码:-)
标签: java spring-mvc video-streaming html5-video http-status-codes