首页 > 其他分享 >基于vue3+el-upload 获取视频第一帧截图并上传服务器

基于vue3+el-upload 获取视频第一帧截图并上传服务器

时间:2023-03-02 11:36:06浏览次数:46  
标签:el canvas const 视频 upload video vue3 data any

//视频上传成功

const handleVideoSuccess: UploadProps['onSuccess'] = ( response,uploadFile) => {

    if (response.status == '500005') {       detailInfo.video_url = response.result.path       getVideoCover(response.result)     }   }   //获取视频第一帧   function getVideoCover() {     const video = document.createElement("video");     video.src = imgUrl+ detailInfo.video_url  //  视频播放地址,imgUrl-域名     const canvas = document.createElement('canvas')     canvas.width = 320     canvas.height = 320     const ctx:any = canvas.getContext('2d');     video.crossOrigin = 'anonymous' // 解决跨域问题,也就是提示污染资源无法转换视频     video.currentTime = 1 // 第一帧
    video.oncanplay = () => {  //视频准备播放       ctx.drawImage(video, 0, 0, canvas.width, canvas.height)       const oGrayImg = canvas.toDataURL("image/png");  //获取base64格式的图片       const fileBolb = convertBase64UrlToBlob(oGrayImg) //转换为二进制       const data = new FormData();       data.append('picture_name',fileBolb,'video.png')  //第一个参数为接口参数名         UpLoadApi(data).then((res: any) => {  //已包装好的后台接口         detailInfo.picture_cover = res.result.path       })       video.remove();       canvas.remove();     }   }   //base64转换为二进制流文件   function convertBase64UrlToBlob(urlData:any){     var arr = urlData.split(','), mime = arr[0].match(/:(.*?);/)[1],         bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);     while(n--){         u8arr[n] = bstr.charCodeAt(n);     }     return new Blob([u8arr], {type:mime}); }   //备注:后台接口  index.ts文件 import request from '@/utils/request'; export function UpLoadApi(data:any) {   return request({       url: '/common/uploadPic',       method: 'post',       headers: { "Content-Type": "multipart/form-data" },       data: data   }) }  

标签:el,canvas,const,视频,upload,video,vue3,data,any
From: https://www.cnblogs.com/daniller/p/17171179.html

相关文章

  • Windows10下使用Intel SGX功能(二):helloworld流程分析
    目录参考文献helloworld代码解读代码目录结构调用流程1.首先定义host和enclave之间相互调用的函数2.实现enclave端的enclave_helloworld()逻辑3.实现host端......
  • 学习vue3遇到的问题
    1.toReftoRef是用来给抽离响应式对象(被reactive包裹的对象)中的某一个属性的,并且把这个属性包裹成ref对象,使其和原对象产生链接。或许有人就回有人有疑问了?这个toRef存在......
  • miniExcel导入导出
    miniExcel的配置使用具体可查看官网:https://gitee.com/dotnetchina/MiniExcel?_from=gitee_search#todo第一步:Neget下载MiniExcel上传//////上传Excel//////......
  • babel使用及分析
    参考资料1、ast查看链接(opensnewwindow)2、bable官网(opensnewwindow)3、AST详解与运用(opensnewwindow)4、babel插件说明babel是一个js编译器,是一个工具链,用......
  • vue3 门户网站搭建6-wangeditor
    门户网站的新闻、公告等文章,内容可配置,故引入wagneditor 1、安装:npmi wangeditor 2、方便调用,抽成组件:<template><divref='editor'></div></template><......
  • Groovy 使用EasyExcel操作Excel
    示例一:读取Excel,打印拼接的Sqlimportcom.alibaba.excel.EasyExcelclassObj{Integernum;Stringname;}defreaderBuilder=EasyExcel.read(newFile(......
  • Java开始指路之Hello world
    1.新建文件夹code,然后创建Hello.txt,重命名为Hello.java,进行编写代码2.cmd对应目录3.javacHello.java,(编译Hello.java文件,生成Hello.class文件)4.javaHello(运行Hel......
  • 关于VMware Centos 7 xshell 连接不上的情况
    关于VMwareCentos7xshell连接不上的情况1、现象在xshell检查ping主机发现能ping同,但是无法ssh上。2、检查思路(先检查系统---》再检查VMware---》台式机)2.1是否......
  • powershell convertTo-json 命令遇到数组只有一个元素 转换为 object 的解决方法
    如题,比如我要Get-NetRoute|ConvertTo-Json获取子网掩码如果结果数组长度大于1那么输出结果是这样的[{...},{...},{...},{...},]但是如果结果数组......
  • 路飞:路飞前端全局css,全局配置文件、配置axios实现前后台交互、安装vue-cookies、安装e
    目录一、路飞前端全局css,全局配置文件1.1整理项目1.2设置全局css1.3配置全局js二、配置axios实现前后台交互三、安装vue-cookies四、安装elementui五、安装bootstrap和j......