uniapp h5上传视频之后获取第x帧图片作为封面

uniapp h5上传视频之后获取第x帧图片作为封面,app还没测试

// 上传视频
			chooseVideo() {
				let that = this;
				uni.chooseVideo({
					count: 1,
					sourceType: ["album", "camera"],
					success: async (res) => {
						console.log(res,'视频封面')
						const tempFilePath = res.tempFilePath;
						// 选取视频的第x帧图片作为封面 start
						let videoss = document.createElement('video');
						var canvas = document.createElement('canvas');
						videoss.setAttribute('width', res.width);
						videoss.setAttribute('height', res.height);
						videoss.setAttribute('crossOrigin', 'anonymous'); //处理跨域
						videoss.setAttribute('src', res.tempFilePath);
						videoss.currentTime = 5;// 第x帧
			
						videoss.onloadeddata = function(v) {
							var ctx = canvas.getContext('2d');
							let width = videoss.width //canvas的尺寸和图片一样
							let height = videoss.height
							canvas.width = width;
							canvas.height = height;
							canvas.getContext("2d").drawImage(videoss, 0, 0, width, height); //绘制canvas
							//转为base64
							var dataURL = canvas.toDataURL('image/jpeg'); //base64 格式
							console.log(dataURL,"-----")
							//上传base64
							that.$api.sendRequest({
								url: '/api/upload/Base64',
								data:{
									images: dataURL
								},
								success: res => {
									if (res.code >= 0) {
										console.log(res,'封面')
										that.fromdata.images = res.data.pic_path
									} else {
										that.$util.showToast({
											title: res.message
										});
									}
								},
								fail: res => {
									that.$util.showToast({
										title: res.message
									});
								}
							})
						}
						// 选取视频的第x帧图片作为封面 end
						
					},
				});
			},

注:我这里用的本地路径转base64图片,如果用网络路径会出现跨域的情况。

我百度这个也可以获取封面,不过只支持小程序。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uniapp是一个跨平台的应用开发框架,可以同时开发出安卓、iOS和H5等多个平台的应用。在Uniapp中,我们可以使用一些插件来实现H5手机上传图片视频的功能。 对于图片上传,可以使用uni.uploadFile方法,通过选择图片后,将其以formData的形式上传到后端服务器。代码示例如下: ``` uni.chooseImage({ success: function (res) { uni.uploadFile({ url: 'http://example.com/upload', filePath: res.tempFilePaths[0], name: 'file', success: function (res) { console.log('图片上传成功'); }, fail: function (err) { console.error('图片上传失败', err); } }); } }); ``` 而对于视频上传,可以使用uni.chooseVideo方法选择要上传视频文件,然后使用uni.uploadFile方法将其上传到后端服务器。代码示例如下: ``` uni.chooseVideo({ success: function (res) { uni.uploadFile({ url: 'http://example.com/upload', filePath: res.tempFilePath, name: 'file', success: function (res) { console.log('视频上传成功'); }, fail: function (err) { console.error('视频上传失败', err); } }); } }); ``` 需要注意的是,上传文件需要后端服务器的支持,我们需要提前配置好后端接口来处理文件上传的请求。另外,在使用上传功能之前,需要先在uni-app的manifest.json配置文件中,将H5平台的origin字段配置为后端服务器的域名,以防止跨域问题的出现。 总结起来,Uniapp可以通过选择图片视频文件,再通过uni.uploadFile方法将文件上传到后端服务器,实现H5手机上传图片视频的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值