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; }