html中用video标签播放视频代码如下,
<video src="xxx.mp4" controls="controls"></video>
xxx.mp4需要放在项目里部署在container里,如果视频文件多或者需要动态上传,全扔在项目里不合适,需要可以读取任意路径下的视频文件供h5的video标签播放。
核心代码如下,简单说就是要在response的header里补几个属性,同时将request里的Range拿出来取出来计算后面的内容
File file = new File("d:/test/video/abc.mp4");
FileInputStream in = null;
ServletOutputStream out = null;
try {
String range = request.getHeader("Range");
String[] rs = range.split("\\=");
range = rs[1].split("\\-")[0];
in = new FileInputStream(file);
long length = file.length();
int irange = Integer.parseInt(range);
length = length - irange;
response.addHeader("Accept-Ranges", "bytes");
response.addHeader("Content-Length", length + "");
response.addHeader("Content-Range", "bytes " + range + "-" + length + "/" + length);
response.addHeader("Content-Type", "audio/mpeg;charset=UTF-8");
out = response.getOutputStream();
int len = 0;
byte[] b = new byte[1024];
in.read();
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(out != null){
out.close();
}
if(in != null){
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
另外把video的src换成servlet的地址就可以了
<video src="xxxServlet" controls="controls"></video>
用spring controller的也是类似的做法
ps: 写博客的“文章标签”有个bug, 无法输入中文。估计是监控了键盘输入事件,而不是控件的值变事件。这个错我也犯过。