最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實(shí)現(xiàn)騰訊云點(diǎn)播視頻上傳功能的實(shí)現(xiàn)代碼

 更新時(shí)間:2020年08月17日 09:42:48   作者:CodeRush007  
這篇文章主要介紹了Vue實(shí)現(xiàn)騰訊云點(diǎn)播視頻上傳功能的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

基于Vue+ElementUI+vod-js-sdk-v6,完成騰訊云點(diǎn)播視頻上傳功能

最近做的一個(gè)項(xiàng)目,需要用到騰訊云點(diǎn)播的視頻上傳??!寫(xiě)一個(gè)盡可能詳細(xì)的博客供各位參考,歡迎指正; ok,下面進(jìn)入正題。
首先是需要用到的依賴:ElementUI、vod-js-sdk-v6、axios

npm i vod-js-sdk-v6
npm i axios
import vue from 'vue'
import { Upload, Progress } from 'element-ui'
vue.use(Upload)
vue.use(Progress)

我采用了ElementUI的手動(dòng)上傳組件,比之自動(dòng)上傳用戶體驗(yàn)會(huì)更好一點(diǎn)

<template>
 <div class="upload_video" id="upload_video">
  <el-upload
  class="upload-demo"
  ref="upload"
  action="#"
  :http-request="uploadVideo" //自定義上傳
  :accept='accept'
  :limit="1" //上傳的文件數(shù)量
  :on-remove="handleRemove" //文件移除事件
  :on-change="handleChange" //文件改變事件
  :auto-upload="false">
    <el-button slot="trigger" size="small" type="primary">選取視頻</el-button>
    <el-button style="margin-left: 40px;" size="small" type="success" @click="submitUpload">點(diǎn)擊上傳</el-button>
    <el-progress class="progress" :text-inside="true" :stroke-width="18" :percentage="progress" status="exception"></el-progress>
   <div slot="tip" class="el-upload__tip">只能上傳mp4文件,且不超過(guò)500M</div>
  </el-upload>
  <video :src="videoURL" id="video" autoplay></video>
  <img id="video_img" style="width:90px;height:160px;display:none">
 </div>
</template>

接下來(lái)是一些變量的定義 以及sdk的引入

import TcVod from 'vod-js-sdk-v6'
export default {
 data () {
  return {
   // 文件列表
   fileList: [],
   // 上傳成功后的地址
   videoURL: '',
   // 進(jìn)度條百分比
   progress: 0,
   // base64圖片地址 注:這個(gè)是項(xiàng)目需要設(shè)置一個(gè)默認(rèn)的視頻封面,不需要的忽略就行
   imgBase: '',
   // 上傳視頻獲取成功后拿到的fileID【備用】
   fileId: ''
  }
 }
}

最后是具體邏輯

methods: {
  // 獲取簽名 這里的簽名請(qǐng)求是由后端提供的,只需要拿到后端給的簽名請(qǐng)求即可
  getVodSignature () {
   const url = '/bpi/artworkMaking/findSingature'
   return this.$axios.post(url).then(function (response) {
    return response.data.data
   })
  },
  // 文件列表改變時(shí) 將文件列表保存到本地
  handleChange (file, fileList) {
   this.fileList = fileList
  },
  // 點(diǎn)擊上傳時(shí)
  submitUpload () {
   if (this.fileList.length < 1) return this.$MessageBox('請(qǐng)先選取視頻,再進(jìn)行上傳', '提示')
   this.uploadVideo()
  },
  // 自定義上傳
  uploadVideo (e) {
   // 當(dāng)
   console.log(this.fileList[0].raw)
   if (this.fileList.length < 1) {
    window.alert('您還沒(méi)有選取文件')
   } else {
   	//必須以函數(shù)的形式返回 sdk參數(shù)限制
    const getSignature = async () => {
     const data = await this.getVodSignature()
     return data
    }
    const tcVod = new TcVod({
     getSignature: getSignature // 獲取上傳簽名的函數(shù)
    })
    // 獲取通過(guò)elementui上傳到本地的文件 因?yàn)閰?shù)類(lèi)型必須為file 不能直接以對(duì)象的形式傳輸
    const mediaFile = this.fileList[0].raw
    const uploader = tcVod.upload({
     mediaFile: mediaFile
    })
    // 監(jiān)聽(tīng)上傳進(jìn)度
    uploader.on('media_progress', info => {
     this.progress = parseInt(info.percent * 100)
    })
    // 上傳結(jié)束時(shí),將url存到本地
    uploader.done().then(doneResult => {
     // 保存地址
     // console.log(doneResult)
     // console.log(this.fileId)
     this.fileId = doneResult.fileId
     this.videoURL = doneResult.video.url
     // 將視頻的第一幀保存為封面 不需要封面的可以直接忽略掉以下代碼
     const canvas = document.createElement('canvas')
     const img = document.getElementById('video_img')
     const video = document.getElementById('video')
     video.setAttribute('crossOrigin', 'anonymous')
     canvas.width = video.clientWidth
     canvas.height = video.clientHeight
     video.onloadeddata = (res) => {
      canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)
      const dataURL = canvas.toDataURL('image/png')
      img.setAttribute('src', dataURL)
      // 拿到base64的字符串,并保存到本地
      this.imgBase = dataURL.split(',')[1]
     }
    })
   }
  },
  // 點(diǎn)擊刪除時(shí)
  handleRemove (file, fileList) {
   console.log(file, fileList.length)
  }
 }

大功告成,需要其他功能的小伙伴請(qǐng)自行參考騰訊云官方demo,去騰訊云文檔官網(wǎng)看,不要看npm?。。?最后附上成品樣式圖0.0,右邊空白是我預(yù)留的視頻預(yù)覽區(qū)域

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于Vue實(shí)現(xiàn)騰訊云點(diǎn)播視頻上傳功能的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)vue騰訊云點(diǎn)播視頻上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VUE開(kāi)發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)后臺(tái)管理頁(yè)面步驟

    VUE開(kāi)發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)后臺(tái)管理頁(yè)面步驟

    本文從整體上介紹Vue框架的開(kāi)發(fā)流程,結(jié)合具體的案例,使用Vue框架調(diào)用具體的后端接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 詳解如何使用webpack打包Vue工程

    詳解如何使用webpack打包Vue工程

    本篇文章主要介紹了詳解如何使用webpack打包Vue工程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • vue中el-autocomplete支持分頁(yè)上拉加載功能

    vue中el-autocomplete支持分頁(yè)上拉加載功能

    最近在項(xiàng)目中使用了ElementUI的el-autocomplete,下面這篇文章主要介紹了vue中el-autocomplete支持分頁(yè)上拉加載功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 關(guān)于element-ui表單中限制輸入純數(shù)字的解決方式

    關(guān)于element-ui表單中限制輸入純數(shù)字的解決方式

    這篇文章主要介紹了關(guān)于element-ui表單中限制輸入純數(shù)字的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 詳解如何創(chuàng)建基于vite的vue項(xiàng)目

    詳解如何創(chuàng)建基于vite的vue項(xiàng)目

    vite 這個(gè)是尤大開(kāi)發(fā)的新工具,目的是以后替代webpack,下面這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建基于vite的vue項(xiàng)目的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    本文介紹了如何在Vue中實(shí)現(xiàn)一個(gè)樹(shù)形結(jié)構(gòu)的下拉多選組件,支持任意一級(jí)選項(xiàng)的選擇,全選功能,以及搜索功能,通過(guò)在mounted生命周期中獲取數(shù)據(jù),并使用handleTree函數(shù)將接口返回的數(shù)據(jù)整理成樹(shù)形結(jié)構(gòu),實(shí)現(xiàn)了這一功能,感興趣的朋友一起看看吧
    2025-01-01
  • ElementPlus el-message-box樣式錯(cuò)位問(wèn)題及解決

    ElementPlus el-message-box樣式錯(cuò)位問(wèn)題及解決

    這篇文章主要介紹了ElementPlus el-message-box樣式錯(cuò)位問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 在Vue 中獲取下拉框的文本及選項(xiàng)值操作

    在Vue 中獲取下拉框的文本及選項(xiàng)值操作

    這篇文章主要介紹了在Vue 中獲取下拉框的文本及選項(xiàng)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 關(guān)于vue.js發(fā)布后路徑引用的問(wèn)題解決

    關(guān)于vue.js發(fā)布后路徑引用的問(wèn)題解決

    最近在vue.js項(xiàng)目發(fā)布后發(fā)現(xiàn)了一個(gè)關(guān)于路徑的問(wèn)題,發(fā)現(xiàn)網(wǎng)上關(guān)于這個(gè)的資料較少,所以給大家總結(jié)下,下面這篇文章主要給大家介紹了如何解決關(guān)于vue.js發(fā)布后路徑引用的問(wèn)題,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • 優(yōu)化Vue頁(yè)面中的表單布局和樣式的技巧

    優(yōu)化Vue頁(yè)面中的表單布局和樣式的技巧

    在日常開(kāi)發(fā)中,Vue 項(xiàng)目中的表單布局和樣式優(yōu)化是一個(gè)重要的環(huán)節(jié),通過(guò)合理的布局與美觀的樣式設(shè)計(jì),不僅可以提升用戶體驗(yàn),還能增加頁(yè)面的實(shí)用性和觀賞性,本文將總結(jié)幾個(gè)常見(jiàn)的表單和表格布局優(yōu)化的技巧,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

富平县| 濮阳县| 甘孜县| 丽江市| 大方县| 响水县| 邹平县| 石河子市| 汝阳县| 吉隆县| 三亚市| 长顺县| 乡城县| 乌拉特后旗| 阿勒泰市| 榆林市| 孝昌县| 肃南| 大关县| 布尔津县| 多伦县| 亚东县| 河南省| 靖西县| 黄冈市| 临清市| 靖宇县| 红原县| 育儿| 封丘县| 阜宁县| 屏东市| 颍上县| 乡城县| 横山县| 津市市| 峨边| 漳浦县| 汶上县| 敖汉旗| 凌源市|