uniapp vue3中app端使用腾讯云点播上传

在项目中有个需求是视频需要上传到腾讯云点播里面,打算使用uniapp的插件

插件地址

https://ext.dcloud.net.cn/plugin?id=2750

首先在uniapp插件市场导入插件

去manifest.json的原生插件配置导入

然后去打自定义基座

引入插件

复制代码
	var UGCUpload = uni.requireNativePlugin("RY-TencentUGCUpload");

获取上传签名后端生成的

javascript 复制代码
// 获取上传签名的函数

	const getSignature = () => {
		return new Promise((resolve, reject) => {
			request({
				url: '/app/tencentCloudOnDemand/signature',
				method: 'GET',
			}).then(res => {
				resolve(res.data)
			}).catch(error => {
				reject(error)
			})
		});
	}

签名生成文档

https://cloud.tencent.com/document/product/266/9221

验证签名是否正确

https://vod-tool.vod-qcloud.com/ugcdecode?lang=zh

初始化插件

javascript 复制代码
const signature = ref();
	
	onReady(async () => {
		const res = await getSignature();
		console.log(res, "当前获取到的参数1");
		signature.value=res;
        //初始化
		UGCUpload.init({
			userId: 'test001',
			signature: res
		}, ret => {
			console.log(ret);
		});
        //获取上传的进度
		UGCUpload.setVideoListener({}, ret => {
			console.log(ret, 'setVideoListener');
		});
	})

点击按钮触发函数

javascript 复制代码
const goVideoUpload = () => {
		uni.chooseVideo({
			sourceType: ['camera', 'album'],
			success: function(res) {
				let tempPath = res.tempFilePath;
				let videoPath = plus.io.convertLocalFileSystemURL(tempPath);
				console.log(tempPath,videoPath,"当前获取的文件")
				goUploadPublishVideo(videoPath);
			}
		});
	}

调用插件上传方法

javascript 复制代码
const goUploadPublishVideo = (videoPath) => {
		console.log(videoPath,"当前获取的文件goUploadPublishVideo")
		console.log( signature.value,"当前获取的签名signature")
		
		UGCUpload.publishVideo({
			signature: signature.value,
			videoPath: videoPath
		}, ret => {
			console.log(ret, "publishVideo");
		});

	}

完整代码

javascript 复制代码
<template>
	<view>
		<button @click="goVideoUpload">上传视频</button>
	</view>
</template>

<script setup>
	var UGCUpload = uni.requireNativePlugin("RY-TencentUGCUpload");
	import {
		ref
	} from 'vue';
	import {
		onReady
	} from '@dcloudio/uni-app'
	import request from '@/common/request.js'
	// 获取上传签名的函数

	const getSignature = () => {
		return new Promise((resolve, reject) => {
			request({
				url: '/app/tencentCloudOnDemand/signature',
				method: 'GET',
			}).then(res => {
				resolve(res.data)
			}).catch(error => {
				reject(error)
			})
		});
	}
	const signature = ref();
	
	onReady(async () => {
		const res = await getSignature();
		console.log(res, "当前获取到的参数1");
		signature.value=res;
		UGCUpload.init({
			userId: 'test001',
			signature: res
		}, ret => {
			console.log(ret);
		});
		UGCUpload.setVideoListener({}, ret => {
			console.log(ret, 'setVideoListener');
		});
	})
	const goVideoUpload = () => {
		uni.chooseVideo({
			sourceType: ['camera', 'album'],
			success: function(res) {
				let tempPath = res.tempFilePath;
				let videoPath = plus.io.convertLocalFileSystemURL(tempPath);
				console.log(tempPath,videoPath,"当前获取的文件")
				goUploadPublishVideo(videoPath);
			}
		});
	}

	const goUploadPublishVideo = (videoPath) => {
		console.log(videoPath,"当前获取的文件goUploadPublishVideo")
		console.log( signature.value,"当前获取的签名signature")
		
		UGCUpload.publishVideo({
			signature: signature.value,
			videoPath: videoPath
		}, ret => {
			console.log(ret, "publishVideo");
		});

	}
</script>

<style>

</style>
相关推荐
咕噜企业分发小米17 小时前
腾讯云和火山引擎在多云管理工具上如何实现成本优化?
java·腾讯云·火山引擎
咕噜企业分发小米17 小时前
腾讯云在搭建平台的时候起什么作用
云计算·腾讯云
刘某某.18 小时前
obsidian 配置阿里云图床
阿里云·云计算
DO_Community19 小时前
海外云 AWS、GCP、Azure 与 DigitalOcean 的核心区别有哪些?
人工智能·云计算·azure·aws·谷歌云·digitalocean
hans汉斯19 小时前
建模与仿真|基于GWO-BP的晶圆机器人大臂疲劳寿命研究
大数据·数据结构·算法·yolo·机器人·云计算·汉斯出版社
合新通信 | 让光不负所托20 小时前
两相浸没式液冷中,冷却液沸腾产生的气泡会不会干扰光模块的正常工作?
网络·安全·云计算·信息与通信·光纤通信
翼龙云_cloud20 小时前
腾讯云渠道商:腾讯云 CVM 在搭建网站上有哪些常见问题?
服务器·云计算·腾讯云
峰顶听歌的鲸鱼21 小时前
Kubernetes核心概述
运维·笔记·云原生·容器·kubernetes·云计算
云上凯歌21 小时前
01_AI工具平台项目概述.md
人工智能·python·uni-app
SaaS_Product21 小时前
企业网盘可以在局域网使用吗?
网络·人工智能·云计算·saas