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>
相关推荐
翼龙云_cloud1 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
奔跑的web.5 小时前
UniApp 路由导航守
前端·javascript·uni-app
特立独行的猫a5 小时前
主要跨端开发框架对比:Flutter、RN、KMP、Uniapp、Cordova,谁是未来主流?
flutter·uni-app·uniapp·rn·kmp·kuikly
落笔画忧愁e6 小时前
腾讯云轻量服务器 + OpenClaw 部署全攻略:从购买到飞书接入
服务器·飞书·腾讯云
孤岛悬城17 小时前
37 日志分析:ELK(Elasticsearch+Logstash+Kibana)
云计算
万物得其道者成17 小时前
UniApp 多端滑块验证码插件 zxj-slide-verify 实用指南
uni-app
蓝帆傲亦19 小时前
支付宝小程序性能暴增秘籍:UniApp项目极限优化全攻略
小程序·uni-app
珠海西格电力科技19 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
Sheffield1 天前
command和shell模块到底区别在哪?
linux·云计算·ansible
2501_916008891 天前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone