问题背景:业务需要录制视频,同时视频文件要做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去压缩视频,得到最终的效果