首页 文章

iOS版;不支持的像素格式

提问于
浏览
11

我的Unity应用程序将相机Feed用于应用程序使用的多个系统;例如Vuforia,ARKit和一般相机输入输入 .

我遇到的问题是每个请求都有不同的像素格式,这似乎会导致ARKit出现问题 . 这需要YUV,我不知道如何原生地将相机像素格式切换回来 . 所以当我尝试在其他人之后启动ARKit时,我得到了这个错误;

2017-08-21 08:51:38.749452 0100 ar_app [399:105849] [传感器]不支持的像素格式:875704438 2017-08-21 08:51:38:49876 0100 ar_app [399:105849] [会话]会话确实失败了错误:错误Domain = com.apple.arkit.error Code = 104“不支持的捕获会话配置 . ” UserInfo = {NSLocalizedRecoverySuggestion =确保正在使用正确的设备和格式进行捕获 . ,NSLocalizedDescription =不支持的捕获会话配置 . ,NSLocalizedFailureReason =给定配置不支持输入设备和/或提供的捕获会话的格式 . }

至少,这就是我认为的问题;它没有获得YUV中的格式 . 任何帮助将非常感激 . . 谢谢 .

2 回答

  • 2

    YUV是一个色彩空间,有多种格式 .

    ar_app [399:105849] [传感器]不支持的像素格式:875704438

    875704438 转换为 420vNV12)或kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange

    kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v'
    

    所以你实际上有一个YUV像素格式,特别是具有视频范围的双平面 .

    ARKit docs确实提到了双平面YUV格式,但没有提到范围的类型:

    像素缓冲区的内容以双平面YCbCr(也称为YUV)数据格式编码

    但是,Unity ARKit插件会检查didUpdateFrame中的kCVPixelFormatType_420YpCbCr8BiPlanarFullRange

    if (CVPixelBufferGetPlaneCount(pixelBuffer) < 2 || CVPixelBufferGetPixelFormatType(pixelBuffer) != kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) {
            return;
        }
    

    所以最后它可能不喜欢它不是全范围的事实,但我没有简单的方法来测试它 . 如果相机和其他模块支持它,也许您可以尝试强制全范围 .

  • 0

    确保不再使用.jpg图像 . iOS希望您使用.png图像 . 我在Swift 4和XCode 9 Beta中遇到了相同的警告/错误 .

相关问题