纯前端播放文件流视频并预览并截取视频第一帧

1、把文件流转为本地可以播放地址

调用getFileURL并传入文件流会返回一个地址,将地址赋值给videosrc即可播放视频,无需上传至服务器。

getFileURL(file) {var url = null;if (window.createObjectURL != undefined) { // basicurl = window.createObjectURL(file);} else if (window.URL != undefined) { // mozilla(firefox)url = window.URL.createObjectURL(file);} else if (window.webkitURL != undefined) { // webkit or chromeurl = window.webkitURL.createObjectURL(file);}return url;
},

2、截取视频第一帧

调用getVideoBase64并将第一步得到的url转给getVideoBase64即可得到视频第一帧图片,getVideoBase64返回的片为base64格式。

注释canvas.toDataURL(type, encoderOptions)type为图片格式,encoderOptions为图片质量(取值为0-1),图片格式为png图片相对会大一些,如果图片为jpeg那么图片相对会小很多,图片为jpeg转换成base64长度会小很多,当然图片质量越小base64长度也会越小。

getVideoBase64(url) {return new Promise(function(resolve, reject) {let dataURL = '';let video = document.createElement("video");video.setAttribute('crossorigin', 'anonymous'); //处理跨域video.setAttribute('src', url);video.setAttribute('width', 222);video.setAttribute('height', 148);video.setAttribute('controls', 'controls');video.currentTime = 1  //视频时长,一定要设置,不然大概率白屏video.addEventListener('loadeddata', function(e) {let canvas = document.createElement("canvas"),width = video.width, //canvas的尺寸和图片一样height = video.height;canvas.width = width;canvas.height = height;canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvasdataURL = canvas.toDataURL('image/jpeg',0.3); //转换为base64var img = document.createElement("img");img.src = dataURLvideo.setAttribute('poster', dataURL);resolve(dataURL);});})
}

纯前端播放文件流视频并预览并截取视频第一帧相关推荐

  1. Vue中 实现文件流格式图片预览

    需求:后端接口返回文档流格式图片,如何在页面中显示显示并预览? 思路: 设置 axios responseType: 'blob':传送门:JavaScript Blob 对象详解 URL.creat ...

  2. 前端pdf文件在浏览器不预览直接下载的方法

    1.先可以看我另篇文章 https://www.cnblogs.com/mo3408/p/12659393.html 2.如果没有合适的再看下面(通过jquery或者js,利用download这个属性 ...

  3. 纯前端下载pdf链接文件,而不是打开预览的解决方案

    纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...

  4. SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片

    场景 SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF: SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF_BADAO_LIUMANG_QIZHI的 ...

  5. 怎么关闭计算机右侧的硬盘预览,选择性关闭视频文件预览 给Win7硬盘CPU减压

    Win7之家( www.win7china.com):选择性关闭视频文件预览 给Win7硬盘CPU减压 很多朋友的硬盘里面保存了大量的图片和电影,图片的格式基本就是jpg为主,但视频文件可就多了去了. ...

  6. JS纯前端实现文件保存

    JS纯前端实现文件保存 <body><a href="" id="a">click here to download your file ...

  7. JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 ​ 前言 两年前博主写了如何利用JavaCV解析各种h264裸流,<JavaCV ...

  8. android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧

    android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧 由于本人想学习音视频相关的东西,所以找了剪映作为借鉴,通过仿照剪映的功能学习音视频相关的东西,所以有了这个项目 暂时这个项目 ...

  9. JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调录像回放视频PS码流并解析预览图像

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 ​ 前言 上一章中<JavaCV音视频开发宝典:使用JavaCV读取海康平台或海 ...

  10. 文件文档在线预览开源项目kkFileView的使用

    文件文档在线预览开源项目kkFileView的使用 1.项目特性 2.部署过程 2.1 二进制下载部署文件进行部署 2.2 docker方式部署 2.3 通过源代码编绎部署 3.部分配置说明 3.1 ...

最新文章

  1. docker导出容器文件
  2. 从配置服务器说起......
  3. Python小游戏(俄罗斯方块)
  4. Android调用手机浏览器打开某网页出现异常情况
  5. 《Unbroken》
  6. SAP Fiori Elements edit按钮的ABAP端实现细节
  7. Java 8中的策略模式
  8. android8.1自定义通知栏,Android 8.1隐藏状态栏图标的实例代码
  9. 2019-暑期实习生-自然语言处理算法岗-面试题
  10. html table样式_CSS表格样式
  11. 任务二十九:表单(一)单个表单项的检验
  12. Sourcegraph 代码搜索
  13. 「leetcode」203.移除链表元素:听说用虚拟头节点会方便很多?
  14. eureka多了一个莫名其妙的服务_这些手游服务器全部飘红,每一个服务器都人多到爆满...
  15. 不加载任何包,手撕一个R语言版BP神经网络模型
  16. HTML+CSS+JS实现 ❤️ 立方体旋转图片切换特效❤️
  17. Unity Shader特效:人物模型动态流动光特效
  18. 基于VMware 的 hive安装与启动
  19. 众包置信度:改进众包数据标记的贝叶斯推断
  20. android的dispatchTouchEvent onInterceptTouchEvent onTouchEvent

热门文章

  1. 转载:Rootkit总结
  2. jQuery实现滑动门效果
  3. 手把手教你提取WOW中的所有声音文件
  4. 计算机设备问题代码43,win10系统提示由于该设备有问题windows已将其停止(代码43)的修复方案...
  5. 如何在doc下运行java程序及打包成.jar格式的Java程序
  6. navicat导入sql语句
  7. c盘java文件误删_C盘的文件被误删如何恢复
  8. 魔百盒之创维E900V22C、E900V22D卡刷精简固件-S905L3A
  9. 复制百度文库的文字加什么后缀_下载百度文库文档 怎么快速提取百度文库中可以完整阅读的文档...
  10. mysql数据库原理及应用实训报告_《数据库原理及应用》实验报告..doc