html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>video</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$.get("candidate/play?scope=11102&canId=10001", function(result){
console.log(result.Result.Data);
$("#v1").attr("src","data:video/mp4;base64,"+result.Result.Data);
});
</script>
</head>
<body>
<video controls="controls" loop="-1" height="500px" width="300px" id="v1"></video>
<div></div>
</body>
</html>
接口:
public RestResponse<byte[]> play(HttpServletRequest request, String scope, String canId) {
RestResponse<byte[]> res = new RestResponse<byte[]>();
//认证验证
boolean isLogin = false;
try {
isLogin = CheckAuth.checkLogin(request, scope);
} catch (Exception e) {
voteLogger.error("调用授权检查接口 CheckAuth#checkLogin失败,ID="+canId, e);
}
if (!isLogin) {
playLogger.info("用户未授权,ID="+canId);
res.setResultID(CandidateConstants.LOGIN_UNPASS);
res.setResultMessage("用户未授权");
return res;
}
InputStream in = null;
ByteArrayOutputStream out = null;
byte[] resByte=null;
try {
in = new FileInputStream(RedisClient.getInstance().get(CandidateConstants.VIDEO_PATH_CACHE_PREFIX+canId).toString());
out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int n = 0;
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
resByte= out.toByteArray();
} catch (Exception e) {
voteLogger.error("获取视频文件失败,ID="+canId, e);
res.setResultID(CandidateConstants.VIDEO_AQUIRE_ERROR);
res.setResultMessage("获取视频文件失败");
return res;
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
res.setResultID(CandidateConstants.INVOKE_SUCCESS);
res.setResultMessage("success");
res.setData(resByte);
return res;
}