iOS版; 不支持的像素格式

Oli*_*nes 11 format camera unity-game-engine ios arkit

我的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.749876 + 0100 ar_app [399:105849] [会话]会话失败并显示错误:错误Domain = com.apple.arkit.error Code = 104"不支持的捕获会话配置."

UserInfo = {NSLocalizedRecoverySuggestion =确保正在使用正确的设备和格式进行捕获.

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

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

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

aer*_*tal 3

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

\n\n
\n

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

\n
\n\n

875704438转换为420vNV12)或kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange

\n\n
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = \'420v\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n
\n

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

\n
\n\n

然而,Unity ARKit 插件会在didUpdateFrame中检查kCVPixelFormatType_420YpCbCr8BiPlanarFullRange

\n\n
 if (CVPixelBufferGetPlaneCount(pixelBuffer) < 2 || CVPixelBufferGetPixelFormatType(pixelBuffer) != kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) {\n        return;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n