vue 项目上传视频到保利威

由于csdn平台审核机制你能携带平台名称,下面以视频平台代替;

由于公司的项目跟视频平台代合作,公司的视频会上传到视频平台代云点播平台然后在从平台获取视频播放;这里是上传和播放的 vue 实现;只是简单的实现,具体的操作还需要根据自己的需求进行更改;

1、准备工作

1、注册账户:https://www.polyv.net/
2、进入的后台管理 选择云点播功能
在这里插入图片描述
3、进入api接口选项 并且会拿到你专属的 【userid】【writeToken】【secretkey】
在这里插入图片描述
这里的 userid、writetoken、readtoken、secrekey 都是代码中必须的配置项,后面代码实现的时候会用到。

2、上传视频

上传视频 sdk :https://help.polyv.net/index.html#/vod/upload_js/web_upload_plugin

代码实现:

<template>
	<div>
		<input
	      type="file"
	      ref="files"
	      multiple="multiple"
	      @change="handleUpload"
	    >
	</div>
</template>
<script>
	import PlvVideoUpload from '@polyv/vod-upload-js-sdk'
	import md5 from 'js-md5'
	export default {
		data(){
			return {
				fileSetting: {
			        desc: '测试视频上传', // 描述
			        cataid: 1, // 分类ID 可以后端传递 也可以不写 或写死
			        tag: 'tag', // 标签
			        luping: 0, // 是否开启视频课件优化处理,对于上传录屏类视频清晰度有所优化:0为不开启,1为开启
			        keepsource: 1 // 是否源文件播放(不对视频进行编码):0为编码,1为不编码
			    }
			}
		},
		methods:{
			// 此方法主要用于加密一些视频平台的专用参数 如果是后端传递的 可以打掉
			getToken(videoUpload) {
			  const ptime = Date.now()
			  const userid = '8588843127'
			  const secretkey = 'TNM0R9GKB9'
			  const writeToken = '42beeed6-f28e-44f2-af64-331e7bc5730a'
			  const hash = md5(ptime + writeToken)
			  const sign = md5(secretkey + ptime)
			  videoUpload.updateUserData({ ptime, hash, sign, userid })
			},
			// 由于视频平台的一些机制 你需要三分钟就重新加密你的 ptime 如果你打掉了就不行
			autoUpdateUserData(timer, videoUpload) {
			  this.getToken(videoUpload)
			  if (timer) {
			    clearTimeout(timer)
			    timer = null
			  }
			  timer = setTimeout(() => {
			    this.autoUpdateUserData(timer, videoUpload)
			  }, 3 * 50 * 1000)
			},
			/**
			 * files:上传文件的数组
			 * fileSetting:传递给视频平台的属性
			 * callback:上传进度(成功、失败)
			 * */
			uploadFile(files, fileSetting, callback){
				let videoUpload = new PlvVideoUpload();
				this.autoUpdateUserData(null, videoUpload);
				Array.from(files).forEach((file, index) => {
					const uploader = videoUpload.addFile(file, {
			        	// 上传视频进度的回调
			        	FileProgress: ({ progress }) => {
				          const progressSize = (progress * 100).toFixed(2)
				          callback(index, progressSize)
				        },
				        // 上传视频成功的回调
				        FileSucceed: ({ fileData }) => {
				          callback(index, fileData)
				        },
				        // 上传视频失败的回调
				        onFileFailed: ({ errData }) => {
				          callback(index, errData)
				        }
				    }, fileSetting)
					//上传全部
					videoUpload.startAll();
				})
			},
			//点击上传
			handleUpload(event){
				if(!event.target.value){
					this.$message.error('请选择需要上传的文件!');
					return false;
				}
				this.uploadFile(event.target.files, this.fileSetting, (index, event) => {
					console.log(index, event);
				})
			}
		}
	}
</script>

上传成功之后会有大约 10 分钟的审核时间,这段时间里视频是不能查看的;审核通过之后就可以正常查看了;

3、播放视频

播放 sdk:https://help.polyv.net/index.html#/vod/js/

代码实现:

<template>
	<div>
	    <div id="player"></div>
	</div>
</template>
<script>
	export default {
		data(){
			return {
			    vodPlayerJs: 'https://player.polyv.net/script/player.js',
      			vid: '8588843127d9b9388660dbda2acbe59b_8' // 视频平台视频对应的vid,上传成功之后也可以获取到这个vid
			}
		},
		mounted() {
		    this.loadPlayerScript(this.loadPlayer)
		},
		destroyed() {
		    if (this.player) {
		      this.player.destroy()
		    }
		},
		methods:{
			loadPlayerScript(callback) {
		      if (!window.polyvPlayer) {
		        const myScript = document.createElement('script')
		        myScript.setAttribute('src', this.vodPlayerJs)
		        myScript.onload = callback
		        document.body.appendChild(myScript)
		      } else {
		        callback()
		      }
		    },
		    // 播放器的实例,以及配置
		    loadPlayer() {
		      const polyvPlayer = window.polyvPlayer
		      this.player = polyvPlayer({
		        wrap: '#player',
		        width: 800,
		        height: 533,
		        vid: this.vid
		      })
		    }
		}
	}
</script>

这个是简单的播放实现,更多的功能可以去播放 sdk 了解更多的配置;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值