背景:紧接着上篇文章,博主已经完成了海康摄像头的视频截取,现在则需要实现视频播放功能。
思路:前端使用video标签,访问后端视频接口地址,并附带视频路径参数,进行播放(后端接口需要支持分段,否则前端视频不能拖动进度条)。
第一步:完成后端方法。
public void play(String path, HttpServletRequest request, HttpServletResponse response) {
String fileName ="测试.mp4";
RandomAccessFile targetFile = null;
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
response.reset();
//获取请求头中Range的值
String rangeString = request.getHeader("Range");
//打开文件
File file = new File(path);
if (file.exists()) {
//使用RandomAccessFile读取文件
targetFile = new RandomAccessFile(file, "r");
long fileLength = targetFile.length();
long requestSize = (int)fileLength;
//分段下载视频
if (StringUtils.hasText(rangeString)) {
//从Range中提取需要获取数据的开始和结束位置
long requestStart = 0, requestEnd = 0;
String[] ranges = rangeString.split("=");
if (ranges.length > 1) {
String[] rangeDatas = ranges[1].split("-");
requestStart = Integer.parseInt(rangeDatas[0]);
if (rangeDatas.length > 1) {
requestEnd = Integer.parseInt(rangeDatas[1]);
}
}
if (requestEnd != 0 &&