我的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 回答
YUV是一个色彩空间,有多种格式 .
875704438
转换为420v
(NV12)或kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:所以你实际上有一个YUV像素格式,特别是具有视频范围的双平面 .
ARKit docs确实提到了双平面YUV格式,但没有提到范围的类型:
但是,Unity ARKit插件会检查didUpdateFrame中的kCVPixelFormatType_420YpCbCr8BiPlanarFullRange:
所以最后它可能不喜欢它不是全范围的事实,但我没有简单的方法来测试它 . 如果相机和其他模块支持它,也许您可以尝试强制全范围 .
确保不再使用.jpg图像 . iOS希望您使用.png图像 . 我在Swift 4和XCode 9 Beta中遇到了相同的警告/错误 .