相关文章推荐
强悍的创口贴  ·  使用 Java 管理 Blob ...·  2 月前    · 
睿智的牛肉面  ·  python ...·  2 月前    · 
骑白马的香菜  ·  Java ...·  2 月前    · 
帅气的领带  ·  使用MonoDevelop开发跨平台的应用程 ...·  8 月前    · 
爱旅游的手套  ·  电脑显示网络连接已断开怎么办-掘金·  1 年前    · 
豪气的消防车  ·  pg数据库时间戳转换日期格式-掘金·  1 年前    · 
奋斗的豆浆  ·  git删除远程已经提交记录 - 知乎·  1 年前    · 
慈祥的仙人掌  ·  Unity3D使用过程中常见的20个问题_丁 ...·  1 年前    · 
Code  ›  Java 使用blob对H5视频播放进行加密开发者社区
blob
https://cloud.tencent.com/developer/article/1335832
乐观的签字笔
1 年前
用户1518699
0 篇文章

Java 使用blob对H5视频播放进行加密

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
用户1518699
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > nice_每一天 > Java 使用blob对H5视频播放进行加密

Java 使用blob对H5视频播放进行加密

作者头像
用户1518699
发布 于 2018-09-12 15:33:35
4.3K 0
发布 于 2018-09-12 15:33:35
举报

1.创建一个H5 <video>标签

<video id="sound" type="video/mp4" controls="controls" autoplay="autoplay"
       webkit-playsinline="true"    playsinline="true"   heigth="100%"></video>

2.创建请求获取视频源,并将视频源转为blob对象

    //创建XMLHttpRequest对象
    var xhr = new XMLHttpRequest();
    //配置请求方式、请求地址以及是否同步
    xhr.open('POST', '/armystudy/blob/getVideoSrc', true);
    //设置请求结果类型为blob
    xhr.responseType = 'blob';
    //请求成功回调函数
    xhr.onload = function(e) {
        if (this.status == 200) {//请求成功
            //获取blob对象
            var blob = this.response;
            //获取blob对象地址,并把值赋给容器
            $("#sound").attr("src", URL.createObjectURL(blob));
    xhr.send();

3.Java后台将视频转为视频源

   @ResponseBody
    @RequestMapping("/getVideoSrc")
    public OutputStream getVideoSrc(HttpServletRequest httpServletRequest,
                                    HttpServletResponse httpServletResponse){
        //1.创建文件对象
        File f = new File("E:/test/1.mp4");
        //2.获取文件名称
        String fileName = f.getName();
        //3.导出文件
        String agent = httpServletRequest.getHeader("User-Agent").toUpperCase();
        InputStream fis = null;
        OutputStream os = null;
        try {
            //4.获取输入流
            fis = new BufferedInputStream(new FileInputStream(f.getPath()));
            byte[] buffer;
            buffer = new byte[fis.available()];
            fis.read(buffer);
            httpServletResponse.reset();
            //5.由于火狐和其他浏览器显示名称的方式不相同,需要进行不同的编码处理
            if(agent.indexOf("FIREFOX") != -1){//火狐浏览器
                httpServletResponse.addHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes("GB2312"),"ISO-8859-1"));
            }else{//其他浏览器
                httpServletResponse.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
            //6.设置response编码
            httpServletResponse.setCharacterEncoding("UTF-8");
            httpServletResponse.addHeader("Content-Length", "" + f.length());
            //设置输出文件类型
            httpServletResponse.setContentType("video/mpeg4");
            //7.获取response输出流
            os = httpServletResponse.getOutputStream();
            os.flush();
            //8.输出文件
            os.write(buffer);
        }catch(Exception e){
            System.out.println(e.getMessage());
        } finally{
            //关闭流
            try {
                if(fis != null){ fis.close(); }
                if(os != null){ os.flush(); }
                if(os != null){os.close(); }
            } catch (IOException e) {
 
推荐文章
强悍的创口贴  ·  使用 Java 管理 Blob 容器的属性和元数据 - Azure Storage | Microsoft Learn
2 月前
睿智的牛肉面  ·  python 怎么转blob类型_mob649e815f494b的技术博客_
2 月前
骑白马的香菜  ·  Java Blob数据持久化转换存储文件技巧探讨 -
2 月前
帅气的领带  ·  使用MonoDevelop开发跨平台的应用程序_张善友的技术博客_51CTO博客
8 月前
爱旅游的手套  ·  电脑显示网络连接已断开怎么办-掘金
1 年前
豪气的消防车  ·  pg数据库时间戳转换日期格式-掘金
1 年前
奋斗的豆浆  ·  git删除远程已经提交记录 - 知乎
1 年前
慈祥的仙人掌  ·  Unity3D使用过程中常见的20个问题_丁小未的专栏的技术博客_51CTO博客
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号