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

3 回复

该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参数实际上并不直接控制最终输出视频的分辨率,而是影响摄像头预览画面的质量。

问题分析:

  1. iOS系统限制:iOS系统对摄像头视频录制有自身的优化和压缩机制,即使设置了特定分辨率,系统仍可能根据设备性能和存储考虑进行重新编码。
  2. 实际行为:你通过supportedVideoResolutions看到的支持分辨率列表,仅表示设备硬件支持这些采集分辨率,但最终输出视频的分辨率由iOS系统决定。
  3. 压缩问题:你提到的"loading"阶段确实是iOS系统在进行视频编码和压缩,这是系统级行为,无法通过HTML5+ API控制。

当前解决方案:

  1. 使用quality参数替代:将quality设置为'high''medium',让系统自动选择最佳分辨率:
cameraOptions = {     
    quality: 'high', // 优先保证视频质量
    format: fmt,
    filename:'_doc/download/ftmsNewVideo/',
    videoMaximumDuration: options.time || 10
};
回到顶部