plus.camera.getcamera在uni-app ios系统拍摄视频 设置720x1280拍摄分辨率不生效 生成的视频很模糊 且生成视频分辨率只有360x640
plus.camera.getcamera在uni-app ios系统拍摄视频 设置720x1280拍摄分辨率不生效 生成的视频很模糊 且生成视频分辨率只有360x640
产品分类:
HTML5+
HBuilderX版本号:
3.7.9
手机系统:
iOS
手机系统版本号:
iOS 26
手机厂商:
苹果
手机机型:
iphoneX(系统版本16) iphone14Pro(系统版本26)ipad9(系统版本15.6.1)
打包方式:
离线
示例代码:
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) { // 调用摄像头进行摄像操作成功回调
console.log(cmr.supportedVideoResolutions); // 输出了 720x1280
return path;
},
function(error) { // 调用摄像头进行摄像操作失败回调
typeof(options.fail) === 'function' && options.fail(error);
},
cameraOptions
);
}
操作步骤:
【报Bug】plus.camera.getcamera在ios系统拍摄视频,设置720x1280拍摄分辨率不生效,生成的视频很模糊,且生成视频分辨率只有360x640
预期结果:
配置720x1280分辨率就要产生720x1280分辨率的视频
实际结果:
产生的视频是360x640分辨率的,和配置的720x1280分辨率不符,且很模糊
bug描述:
plus.camera.getcamera在ios拍摄视频,设置分辨率720x1280拍视频不生效,生成的视频总是很模糊,并且查看生成的视频显示分辨率一直都是360x640的。更换设备和系统版本,都一样的情况。生成视频前,ios会有一段loading,应该是在压缩视频,但前端并没有添加压缩视频相关的功能。使用supportedVideoResolutions查看设备支持分辨率,其中显示是支持720x1280分辨率拍摄视频的。打包方式是在vscode使用命令打包成app。
更多关于plus.camera.getcamera在uni-app ios系统拍摄视频 设置720x1280拍摄分辨率不生效 生成的视频很模糊 且生成视频分辨率只有360x640的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该bug反馈内容较为完整,包含标题、详细描述、代码示例、复现步骤、预期与实际结果及分类信息。描述清晰展示了iOS设备上plus.camera.getCamera设置720x1280分辨率无效的问题,代码可直接运行,复现路径明确。预期结果合理,但需验证iOS平台实际支持情况。
经分析,该bug很可能成立。iOS平台对视频分辨率处理有特殊机制:1) 分辨率参数格式应为"1280x720"而非"720*1280"(横屏基准);2) HBuilderX 3.7.9为较旧版本(当前主流版本已更新至4.x),可能存在未修复的iOS适配问题;3) 虽然supportedVideoResolutions显示支持该分辨率,但iOS系统可能因设备方向或硬件限制自动降分辨率。知识库虽未直接包含camera API文档,但根据uni-app特性,iOS平台对plus API的实现常存在与Android的差异。
建议用户:1) 尝试将分辨率格式改为"1280x720";2) 升级至最新HBuilderX版本;3) 参考plus.camera文档确认iOS平台限制。若仍需高分辨率视频,可考虑使用uni-app x的uvue方案,其iOS原生渲染能力更强,但需注意uni-app x已移除plus API,需改用新API体系。 内容为 AI 生成,仅供参考
更多关于plus.camera.getcamera在uni-app ios系统拍摄视频 设置720x1280拍摄分辨率不生效 生成的视频很模糊 且生成视频分辨率只有360x640的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HTML5PULS plus.camera 中在ios端 CameraOptions 中的 resolution 传了字符串 1280*720 ,但输出的视频仍是默认参数效果。没有输出对应分辨的视频。
但如果传 high 则会执行 high的拍摄分辨率。
查看H5+源码 怀疑是没有成功添加 UIImagePickerControllerQualityTypeIFrame1280x720 的参数。
这是一个已知的iOS平台限制问题。在iOS系统中,plus.camera模块的resolution参数实际上并不直接控制最终输出视频的分辨率,而是影响摄像头预览画面的质量。
问题分析:
- iOS系统限制:iOS系统对摄像头视频录制有自身的优化和压缩机制,即使设置了特定分辨率,系统仍可能根据设备性能和存储考虑进行重新编码。
- 实际行为:你通过
supportedVideoResolutions看到的支持分辨率列表,仅表示设备硬件支持这些采集分辨率,但最终输出视频的分辨率由iOS系统决定。 - 压缩问题:你提到的"loading"阶段确实是iOS系统在进行视频编码和压缩,这是系统级行为,无法通过HTML5+ API控制。
当前解决方案:
- 使用
quality参数替代:将quality设置为'high'或'medium',让系统自动选择最佳分辨率:
cameraOptions = {
quality: 'high', // 优先保证视频质量
format: fmt,
filename:'_doc/download/ftmsNewVideo/',
videoMaximumDuration: options.time || 10
};

