2017-08-21 64 views
12

Aplikacja My Unity wykorzystuje kanał aparatu dla wielu systemów używanych przez aplikację; takie jak Vuforia, ARKit i tylko ogólne wejście kamery.iOS; Nieobsługiwany format pikseli

Problem polega na tym, że każdy z nich żąda innego formatu pikseli, który wydaje się powodować problem dla ARKit. Wymaga to YUV i nie wiem jak natywnie zmienić format pikseli kamery z powrotem do tego. Dostaję ten błąd, gdy próbuję uruchomić ARKit po innych;

2017-08-21 08:51:38.749452+0100 ar_app[399:105849] [Sensor] Unsupported pixel format: 875704438

2017-08-21 08:51:38.749876+0100 ar_app[399:105849] [Session] Session did fail with error: Error Domain=com.apple.arkit.error Code=104 "Unsupported capture session configuration."

UserInfo={ NSLocalizedRecoverySuggestion=Make sure that the correct device and format are being used for capture.,

NSLocalizedDescription=Unsupported capture session configuration.,

NSLocalizedFailureReason=Input device and/or format of the provided capture session are not supported for the given configuration. }

Przynajmniej tak myślę; że nie otrzymuje formatu w YUV. Każda pomoc byłaby bardzo cenna. . Dzięki.

Odpowiedz

2

YUV to przestrzeń kolorów, istnieje wiele formatów.

ar_app[399:105849] [Sensor] Unsupported pixel format: 875704438

875704438 przekłada się 420v (NV12) lub kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:

kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v' 

Więc faktycznie mają format YUV pikseli, a konkretnie biplanar z zakresu wideo.

ARKit docs zrobić wspomnieć format biplanar YUV, ale nie typ zakresie:

The pixel buffer’s contents are encoded in a biplanar YCbCr (also called YUV) data format

Jednak Unity ARKit Plugin robi czek na kCVPixelFormatType_420YpCbCr8BiPlanarFullRange w didUpdateFrame:

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

Tak na zakończenie może nie podoba mi się to, że nie jest to pełny zakres, ale nie mam łatwego sposobu na sprawdzenie go. Może możesz spróbować wymusić pełny zakres, jeśli obsługuje go kamera i inne moduły.

+0

Dzięki za pomoc. Jak wymusiłbym pełny zakres? Nie jestem natywnym programistą Xcode. –

+0

@OliverJones Przepraszam, ja nie. To ustawienie nie wydaje się być widoczne w ARKit. Vuforia pozwala ci ustawić [YUV] (https://library.vuforia.com/articles/Solution/Working-with-the-Camera#How-To-Access-the-Camera-Image-in-Unity), ale nie robi tego " • powiedz jaki rodzaj formatu YUV używa. A to przy założeniu, że podstawowym problemem jest to, co ARKit faktycznie zgłasza, a nie efekt uboczny czegoś innego (urządzenie nie jest zwolnione, jakiś inny błąd). – aergistal

0

Nie należy już używać obrazów .jpg. iOS chce, abyś używał obrazów .png. Miałem takie samo ostrzeżenie/błąd w Swift 4 i XCode 9 Beta.

+0

Jak to zrobić? Nazywa się rodzimym ARKit. –