plus.camera.getcamera在uni-app ios拍摄视频设置拍摄分辨率生效但生成的视频很模糊
plus.camera.getcamera在uni-app ios拍摄视频设置拍摄分辨率生效但生成的视频很模糊
function getVideo(options) {
const videoStartTime = getTime(); // 视频录制开始时间
const cmr = plus.camera.getCamera(); // 获取摄像头对象
const res = ‘720*1280’; // 摄像头分辨率
const fmt = options.format; // 视频格式
let cameraOptions = {}; // // 相机参数
if (uni.getSystemInfoSync().platform === ‘android’) {
cameraOptions = {
format: fmt, // 视频格式
videoMaximumDuration: options.time || 10 // 视频长度 单位s
};
} else {
cameraOptions = {
resolution: res, // 摄像头分辨率
format: fmt, // 视频格式
quality: ‘high’,
filename:’_doc/download/ftmsNewVideo/’, // ios指定文件夹,否则不能删除原文件
videoMaximumDuration: options.time || 10 // 视频长度 单位s
};
}
cmr.startVideoCapture(
function(path) { // 调用摄像头进行摄像操作成功回调
return path;
},
function(error) { // 调用摄像头进行摄像操作失败回调
typeof(options.fail) === ‘function’ && options.fail(error);
},
cameraOptions
);
}
在 uni-app 中使用 plus.camera.getCamera 设置视频分辨率时,iOS 端出现设置生效但生成视频模糊的问题,通常涉及以下关键点:
-
分辨率设置与设备支持:
- 通过
camera.getCamera()获取摄像头对象后,使用camera.startVideoCapture()时,需在options参数中明确指定resolution(如"high"或"medium")。 - 但 iOS 设备对分辨率的支持取决于硬件和系统限制。若设置的分辨率超出摄像头支持范围,系统可能自动降级到较低分辨率,导致视频模糊。
- 通过
-
编码参数匹配:
- 分辨率设置后,还需检查
videoBitrate(视频比特率)和videoCodec(编码格式)。若比特率过低(如默认值),即使分辨率较高,视频也可能因压缩过度而模糊。建议根据分辨率调整比特率(例如 1080p 至少设为 5-10 Mbps)。
- 分辨率设置后,还需检查
-
实际代码示例:
const camera = plus.camera.getCamera(); camera.startVideoCapture({ resolution: 'high', // 明确指定分辨率 videoBitrate: 8000000, // 设置较高比特率(如 8 Mbps) filename: '_doc/video/' }, successCallback, errorCallback);


