解决uniapp录制视频的问题

219 阅读1分钟

问题背景:业务需要录制视频,同时视频文件要做md5,开发机是华为平板。

第一次解决方案:

uni.chooseVideo({
    sourceType: ["camera"],
    extension: [".mp4"],
    compressed: true,
	maxDuration: 60,
    success: res => {
		 //拿到文件地址进行加密
	},
	fail: res => {
	    console.log("失败", res)
	}
});

存在的问题:1.录制的视频时长最长60s;2.视频压缩后的画质不理想,不压缩的话,文件又太大;3.多次调用摄像头时会出现报错,导致无法录像

第二次解决方案:

let camera : PlusCameraCamera = plus.camera.getCamera();
    camera.startVideoCapture(
		function (path) {
			uni.compressVideo({
				src: path,
				quality: "medium",
				success: (res) => {
					saveData(res.tempFilePath, ".mp4");
				},
				fail: (err) => {
					console.log("压缩失败", err)
				},
			})
		},
		function (err) {
			console.log(err)
		}, {
		videoMaximumDuration: 60,
		resolution: "1280x720",
	});

通过plus对象去启用摄像头,可以解除60s上限,但是因为我用的是华为的平板,无法设置分辨率,(网上搜过,安卓的好像都不支持设置),所以使用compressVideo去压缩视频,得到最终的效果

uniapp压缩视频接口

plus的camera