苹果;不支持的像素格式



My Unity 应用程序将相机源用于应用程序使用的多个系统;例如 Vuforia、ARKit 和常规摄像机源输入。

我遇到的问题是,其中每个都请求不同的像素格式,这似乎会导致 ARKit 出现问题。这需要 YUV,我不知道如何本机将相机像素格式切换回此格式。因此,当我尝试在其他人之后启动ARKit时,我会收到此错误;

2017-08-21 08:51:38.749452+0100 ar_app[399:105849] [传感器] 不支持的像素格式:875704438

2017-08-21 08:51:38.749876+0100 ar_app[399:105849] [会话] 会话失败,出现错误:错误 域=com.apple.arkit.error 代码=104"不支持的捕获会话 配置。

用户信息={ NSLocalizedRecoverySuggestion=确保使用正确的设备和格式进行捕获。

NSLocalizedDescription=不支持的捕获会话配置。,

NSLocalizedFailureReason=给定的捕获会话不支持输入设备和/或提供的捕获会话的格式 配置。}

至少,这就是我认为的问题所在;它没有获得YUV的格式。任何帮助将不胜感激。 . 谢谢。

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

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

875704438转换为420v(NV12(或kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:

kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v'

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

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

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

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

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

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

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

最新更新