vue结合el-upload实现腾讯云视频上传功能


Posted in Javascript onJuly 01, 2020

起因

根据需求要实现一个视频上传功能,之前采用七牛云上传,小点视频没问题,大体积视频比如600M左右,再考虑到网速等其他原因就会花费半个小时左右。

后来分析到不仅要考虑上传时间的问题,更重要的是要考虑用户使用4G 网络的情况,考虑用户的流量,线上的视频,不能不做压缩转码,就放到页面上,视频不是图片,不能甩到 cdn 上就行了。 要考虑视频大小,pc 移动端适配,转码,还有防盗版等问题。

最终决定使用腾讯云上传视频,我的项目是web端上传,参考以下链接

官网链接:cloud.tencent.com/document/product/266/9239#.E6.96.AD.E7.82.B9.E7.BB.AD.E4.BC.A0

在项目中的使用

项目使用vue.js + element-ui el-upload组件

引入sdk:

npm install vod-js-sdk-v6
import TcVod from 'vod-js-sdk-v6'

html代码

//上传
 <el-upload
  ref="upload"
  action="filename" 
  :http-request="httpRequest"
  :show-file-list="false">
  <i v-if="videoFlag == false" class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>
 
 // 进度条
 <el-progress
   v-if="videoFlag"
   type="circle"
   :percentage="videoUploadPercent"
  ></el-progress>
  • action:上传地址,必填,但我们使用http-request,填任意字符串即可,没有实际意义。
  • http-request:覆盖默认上传行为,我们这里就需要自定义上传行为
  • percentage:进度条进度

js代码

methods:{
 // 视频-自定义地址
  httpRequest(file){
  const _this = this
   // 限制视频格式
   if (["video/mp4", "video/quicktime"].indexOf(file.file.type) == -1) {
    this.$message.error("视频格式有误,上传失败");
    return false;
   }
    // 限制视频小于700M
   const isLt10M = file.file.size / 1024 / 1024 < 700;
   if (!isLt10M) {
    this.$message.error("请上传MP4、MOV格式且不超过700MB的视频哦!");
    return false;
   }
    // 显示进度条从0开始
    _this.videoFlag = true
    this.videoUploadPercent=0
   // 获取视频签名
    const getSignature = async function(){
     return await getuploadsignature({ //这里就是发axios请求
      video_type:'operating_activity' // 参数是和后台定义的,不需要可以不写
     }).then(res => {
       return res
     })
  }

  // 前文中所述的获取上传签名的函数
  const tcVod = new TcVod({
   getSignature:getSignature
   })
  const uploader = tcVod.upload({
   mediaFile: file.file // 这里腾讯云需要获取到file文件里的name,根据你file结构进行填写
  })
  this.uploaderG = uploader // 定义全局用于取消上传

  // 进度
  uploader.on('media_progress', function(info) {
    _this.videoUploadPercent = parseInt(info.percent * 100);
  })

  // 上传成功
  uploader.done().then((doneResult) => {
    _this.videoFlag = false // 关闭进度条
    _this.videoForm.Video = doneResult.fileId // 存储fileId
    // 这里发请求给后端进行转码操作
    const data = {
     file_id:doneResult.fileId, // 腾讯云file_id
     video_type:'operating_activity', // 视频类型
     video_name:'', // 视频名称
     video_url: doneResult.video && doneResult.video.url?doneResult.video.url:'',// 视频地址
    }
    // 腾讯视频转码
    videoProcedure(data)
    .then(res => {
    }).catch(err => {
     console.log(err)
    })
  }).catch( (err) => {
   console.log(err)
  })
}
}

转码需要一定的时间,视频体积越大转码时间越长。
表单提交时将fileId值传给后端,等需要预览视频时,获取fileId后请求后端的视频详情接口,最终播放返回的视频地址即可。

到此这篇关于vue结合el-upload实现腾讯云视频上传功能的文章就介绍到这了,更多相关vue 腾讯云视频上传内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Javascript 相关文章推荐
js资料toString 方法
Mar 13 Javascript
javascript下IE与FF兼容函数收集
Sep 17 Javascript
jQuery中val()方法用法实例
Dec 25 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
jQuery实现两个select控件的互移操作
Dec 22 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
Javascript实现基本运算器
Jul 15 Javascript
js HTML5 canvas绘制图片的方法
Sep 08 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
Element中Slider滑块的具体使用
Jul 29 Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 #Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 #Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 #Javascript
微信小程序用户盒子、宫格列表的实现
Jul 01 #Javascript
vue商城中商品“筛选器”功能的实现代码
Jul 01 #Javascript
vue实现购物车列表
Jun 30 #Javascript
vue实现简单图片上传
Jun 30 #Javascript
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
ECMAScript 基础知识
2007/06/29 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
vuex 的简单使用
2018/03/22 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
Python 文件重命名工具代码
2009/07/26 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python读取和保存视频文件
2018/04/16 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python反编译学习之字节码详解
2019/05/19 Python
Django 路由控制的实现
2019/07/17 Python
Python单元测试与测试用例简析
2019/11/09 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
公司委托书格式范文
2014/04/04 职场文书
拾金不昧感谢信
2015/01/21 职场文书
月考总结与反思
2015/10/22 职场文书