广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现视频上传功能
  • 894
分享到

vue实现视频上传功能

2024-04-02 19:04:59 894人浏览 独家记忆
摘要

本文实例为大家分享了Vue实现视频上传功能的具体代码,供大家参考,具体内容如下 环境:vue + TS 上传视频 + 上传到阿里云 主要处理前端在vue下上传视频 使用的是阿里云的视

本文实例为大家分享了Vue实现视频上传功能的具体代码,供大家参考,具体内容如下

环境:vue + TS 上传视频 + 上传到阿里云
主要处理前端在vue下上传视频

使用的是阿里云的视频点播服务

1、需要后台去申请一个开发api,请求阿里云的接口访问控制
2、有了开发视频的token,供给前端
3、前端去请求阿里云存储

video.vue


<template>
  <div class="container">
    <el-card>
      <div slot="header">
        <div>课程:</div>
        <div>阶段:</div>
        <div>课时:</div>
      </div>
      <el-fORM label-width="40px">
        <el-form-item label="视频">
          <input
            ref="video-file"
            type="file"
          >
        </el-form-item>
        <el-form-item label="封面">
          <input
            ref="image-file"
            type="file"
          />
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            @click="authUpload"
          >开始上传</el-button>
          <el-button>返回</el-button>
        </el-form-item>
      </el-form>
    </el-card>
  </div>
</template>
<script>

import axiOS from 'axios'
import {
  aliyunImagUploadAddressAdnAuth,
  aliyunVideoUploadAddressAdnAuth,
  transCodeVideo,
  getAliyunTransCodePercent
} from '@/services/aliyun-oss'

export default {
  data () {
    return {
      uploader: null,
      videoId: null,
      imageUrl: '',
      fileName: ''
    }
  },
  created () {
    this.initUploader()
  },
  methods: {
    authUpload () {
      const videoFile = this.$refs['video-file'].files[0]
      this.uploader.addFile(videoFile, null, null, null, '{"Vod":{}}')
      this.uploader.addFile(this.$refs['image-file'].files[0], null, null, null, '{"Vod":{}}')
      this.fileName = videoFile.name
      this.uploader.startUpload()
    },
    initUploader () {
      this.uploader = new window.AliyunUpload.Vod({
        // 阿里账号ID,必须有值 ,值的来源https://help.aliyun.com/knowledge_detail/37196.html
        userId: 1618139964448548,
        // 上传到点播的地域, 默认值为'cn-shanghai',//eu-central-1,ap-southeast-1
        region: 'cn-shanghai',
        // 分片大小默认1M,不能小于100K
        partSize: 1048576,
        // 并行上传分片个数,默认5
        parallel: 5,
        // 网络原因失败时,重新上传次数,默认为3
        retryCount: 3,
        // 网络原因失败时,重新上传间隔时间,默认为2秒
        retryDuration: 2,
        // 开始上传
        onUploadstarted: async uploadInfo => {
          console.log('onUploadstarted', uploadInfo)
          let uploadAuthInfo = null
          if (uploadInfo.isImage) {
            const { data } = await aliyunImagUploadAddressAdnAuth()
            this.imageUrl = data.data.imageURL
            uploadAuthInfo = data.data
          } else {
            const { data } = await aliyunVideoUploadAddressAdnAuth({
              fileName: uploadInfo.file.name
            })
            this.videoId = data.data.videoId
            uploadAuthInfo = data.data
          }
          
          // console.log('uploadAuthInfo', uploadAuthInfo)

          this.uploader.setUploadAuthAndAddress(
            uploadInfo,
            uploadAuthInfo.uploadAuth,
            uploadAuthInfo.uploadAddress,
            uploadAuthInfo.videoId || uploadAuthInfo.imageId
          )
        },
        // 文件上传成功
        onUploadSucceed: function (uploadInfo) {
          console.log('onUploadSucceed', uploadInfo)
        },
        // 文件上传失败
        onUploadFailed: function (uploadInfo, code, message) {
          console.log('onUploadFailed')
        },
        // 文件上传进度,单位:字节
        onUploadProgress: function (uploadInfo, totalSize, loadedPercent) {
        },
        // 上传凭证超时
        onUploadTokenExpired: function (uploadInfo) {
          console.log('onUploadTokenExpired')
        },
        // 全部文件上传结束
        onUploadEnd: async uploadInfo => {
          console.log(uploadInfo)
          console.log({
            lessonId: this.$route.query.lessonId,
            fileId: this.videoId,
            coverImageUrl: this.imageUrl,
            fileName: this.fileName
          })
          const { data } = await transCodeVideo({
            lessonId: this.$route.query.lessonId,
            fileId: this.videoId,
            coverImageUrl: this.imageUrl,
            fileName: this.fileName
          })
          console.log(data)

          setInterval(async () => {
             const { data } = await getAliyunTransCodePercent(this.$route.query.lessonId)
             console.log('转码进度', data)
          }, 3000)
        }
      })
    }
  }
}
</script>

aliyun-oss.ts ,存放接口




import request from '@/utils/request'

export const aliyunImagUploadAddressAdnAuth = () => {
  return request({
    method: 'GET',
    url: '/boss/course/upload/aliyunImagUploadAddressAdnAuth.JSON'
  })
}

export const aliyunVideoUploadAddressAdnAuth = (params: any) => {
  return request({
    method: 'GET',
    url: '/boss/course/upload/aliyunVideoUploadAddressAdnAuth.json',
    params
  })
}

export const transCodeVideo = (data: any) => {
  return request({
    method: 'POST',
    url: '/boss/course/upload/aliyunTransCode.json',
    data
  })
}

export const getAliyunTransCodePercent = (lessonId: string | number) => {
  return request({
    method: 'GET',
    url: '/boss/course/upload/aliyunTransCodePercent.json',
    params: {
      lessonId
    }
  })
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现视频上传功能

本文链接: https://www.lsjlt.com/news/124724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现视频上传功能
    本文实例为大家分享了vue实现视频上传功能的具体代码,供大家参考,具体内容如下 环境:vue + TS 上传视频 + 上传到阿里云 主要处理前端在vue下上传视频 使用的是阿里云的视...
    99+
    2022-11-12
  • Vue+ElementUI实现视频上传功能
    一、前言 项目中需要提供一个视频介绍,使用户能够快速、方便的了解如何使用产品以及注意事项。 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后...
    99+
    2022-11-12
  • 使用vue怎么实现一个视频上传功能
    本篇文章为大家展示了使用vue怎么实现一个视频上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Vue的优点Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运...
    99+
    2023-06-14
  • Springboot实现视频上传及压缩功能
    目录一、定义视频上传请求接口二、视频暂存至本地文件夹三、开始压缩视频四、上传至阿里云并获取压缩后的视频路径五、核心调用六、spring boot的yml配置文件  在SpringBo...
    99+
    2023-03-03
    Springboot视频上传压缩 Springboot视频上传 Springboot上传压缩
  • 微信小程序实现上传视频功能
    本文实例为大家分享了微信小程序上传视频,供大家参考,具体内容如下 微信开发者工具需要安装ffmpeg环境才能正常使用下面的官方方法。 1、调用官方提供的方法(wx.chooseMed...
    99+
    2022-11-13
  • SimpleCommand实现上传文件或视频功能(四)
    上传文件的核心功能主要是在UploadCommand.java中实现使用步骤:1 创建UploadCommand的构建类BuilderUploadCommand.Builder builder = new UploadCommand.Bui...
    99+
    2023-05-30
    simplecommand 上传 %d
  • Springboot如何实现视频上传及压缩功能
    这篇“Springboot如何实现视频上传及压缩功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Springboot如何实...
    99+
    2023-07-05
  • Thinkphp5实现图片、音频和视频文件的上传功能
    本篇文章为大家展示了Thinkphp5实现图片、音频和视频文件的上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种。<!DOC...
    99+
    2023-06-15
  • JavaScript如何实现上传文件,图片,视频功能
    这篇文章给大家分享的是有关JavaScript如何实现上传文件,图片,视频功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体代码如下所示:// 上传目标触发点&nb...
    99+
    2022-10-19
  • JavaScript中如何使用webuploader实现上传视频功能
    这篇文章主要为大家展示了“JavaScript中如何使用webuploader实现上传视频功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript...
    99+
    2022-10-19
  • Vue+canvas实现视频截图功能
    开发过程中遇到一个实际问题,上传的视频需要提供视频封面(视频封面必填)。封面可以自己制作并上传,但是这样需要脱离网站,用其他方式制作封面,使用体验并不友好,因此第一个想到的方案是:上...
    99+
    2022-09-27
  • 织梦dedecms默认编辑器实现上传视频功能
    织梦默认的编辑器采用的是ckeditor厂商提供的,只可以上传Flash,今天我们进行二次改进,使之可以上传视频文件如MP4文件进行播放,方法比较简单,无需去更换编辑器,下面就言归正传。 第一步:后台系统–添加MP...
    99+
    2022-10-20
  • vue实现头像上传功能
    本文实例为大家分享了vue实现头像上传的具体代码,供大家参考,具体内容如下 1.创建项目,使用vue-admin-template框架 2.使用vue命令在终端(开发工具VScod...
    99+
    2022-11-13
  • Vue怎么实现Excel上传功能
    这篇文章主要讲解了“Vue怎么实现Excel上传功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue怎么实现Excel上传功能”吧!1、HTML部分<Col span=&...
    99+
    2023-07-04
  • uniapp上传图片和上传视频的实现方法
    目录上传图片上传视频扩展补充:上传文件实例总结基于 uniapp 的应用上传图片/视频 资源的实现: 功能涉及的主要 uniapp API 如下: 1.选择图片:uni.choose...
    99+
    2023-01-17
    uniapp上传视频文件 uniapp 上传图片 vue视频上传
  • vue实现简单图片上传功能
    本文实例为大家分享了vue实现简单图片上传的具体代码,供大家参考,具体内容如下 就是给自己留个参照,有什么不合理的地方请大家指出来,然后调整 1.效果展示 2.html相关的代码展...
    99+
    2022-11-13
  • vue实现pc端拍照上传功能
    本文实例为大家分享了vue实现pc端拍照上传功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html>   <hea...
    99+
    2022-11-12
  • vue+axios+java实现文件上传功能
    本文实例为大家分享了vue+axios+java实现文件上传的具体代码,供大家参考,具体内容如下 背景 vue.js + axios + element前端,Java后台实现的文件上...
    99+
    2022-11-13
  • Jeeplus-vue 实现文件的上传功能
    前端 一、uploadList.vue ① 首先在页面中添加一个放置图片的位置,来展示图片 <el-table-column prop="upload" labe...
    99+
    2022-11-13
  • VUE如何实现上传图片功能
    这篇“VUE如何实现上传图片功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“VUE如何实现上传图片功能”文章吧。首先要创建...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作