plus.camera.getcamera在uni-app ios拍摄视频设置拍摄分辨率生效但生成的视频很模糊

plus.camera.getcamera在uni-app ios拍摄视频设置拍摄分辨率生效但生成的视频很模糊

3 回复

该bug反馈内容基本完整但存在关键缺失:标题、描述、复现步骤、预期/实际结果齐全,但缺少核心代码示例,无法直接验证问题。分类信息包含HBuilderX 4.87、iOS 15等必要环境信息,但未说明具体分辨率设置参数(如quality、width/height等)。
经分析,此问题很可能不成立。iOS系统对视频输出有强制压缩机制,这是系统级行为而非uni-app bug。根据平台特性,uni-app的plus.camera API在iOS上调用系统原生相机时,即使预览分辨率正常,最终视频仍可能被系统自动压缩至较低分辨率(如360*640)。知识库中虽无直接camera文档,但iOS开发规范明确视频导出会进行压缩优化,且uni-app 4.87版本未报告此类异常。建议用户参考plus.camera文档确认iOS平台限制:需通过success回调中的videoPath获取路径,而非预期直接输出设定分辨率。若需更高画质,应检查设备是否支持目标分辨率(部分iOS设备仅支持特定视频规格),并尝试设置quality: "high"参数。此属平台特性,非缺陷,建议补充代码后重试或调整预期。 内容为 AI 生成,仅供参考

更多关于plus.camera.getcamera在uni-app ios拍摄视频设置拍摄分辨率生效但生成的视频很模糊的实战教程也可以访问 https://www.itying.com/category-93-b0.html


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 端出现设置生效但生成视频模糊的问题,通常涉及以下关键点:

  1. 分辨率设置与设备支持

    • 通过 camera.getCamera() 获取摄像头对象后,使用 camera.startVideoCapture() 时,需在 options 参数中明确指定 resolution(如 "high""medium")。
    • 但 iOS 设备对分辨率的支持取决于硬件和系统限制。若设置的分辨率超出摄像头支持范围,系统可能自动降级到较低分辨率,导致视频模糊。
  2. 编码参数匹配

    • 分辨率设置后,还需检查 videoBitrate(视频比特率)和 videoCodec(编码格式)。若比特率过低(如默认值),即使分辨率较高,视频也可能因压缩过度而模糊。建议根据分辨率调整比特率(例如 1080p 至少设为 5-10 Mbps)。
  3. 实际代码示例

    const camera = plus.camera.getCamera();
    camera.startVideoCapture({
      resolution: 'high', // 明确指定分辨率
      videoBitrate: 8000000, // 设置较高比特率(如 8 Mbps)
      filename: '_doc/video/'
    }, successCallback, errorCallback);
回到顶部