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>
相关推荐
静以修身zzz19 小时前
计算云服务
运维·网络·云计算
Henry-SAP19 小时前
阿里云大模型份额居首
阿里云·云计算
长不大的杨瑞杰1 天前
OpenCode v2 运行时预热实战:Warming、Prompt Cache、后台服务与成本治理
人工智能·安全·云计算·软件工程·devops
腾讯云大数据1 天前
腾讯云发布一站式多模态数据处理与模型训推方案,助力Physical AI释放生产力
大数据·人工智能·云计算·腾讯云
sbjdhjd1 天前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
长不大的杨瑞杰2 天前
OpenCode v2 会话可靠性实战:Snapshots、Compaction、Instructions 与 Formatters
人工智能·安全·云计算·软件工程·devops
做运维的阿瑞2 天前
云项目可观测性与成本治理:告警、日志、Dashboard 与预算标签
大数据·云原生·云计算·terraform
知已难寻2 天前
01 · OpenStack的认证管理 Keystone
运维·服务器·云原生·云计算·openstack
做运维的阿瑞2 天前
EKS 可销毁环境:集群创建、应用部署到账单归零
云原生·云计算·terraform
CHB2 天前
别再问uni-app x蒸汽模式是否成熟了,已经有大量App案例上架应用商店了
uni-app