2017-08-21 2 views
12

Mon application Unity utilise le flux Caméra pour plusieurs systèmes utilisés par l'application; tels que Vuforia, ARKit, et juste l'entrée de flux de caméra générale. Le problème que j'ai, c'est que chacun d'entre eux demande un format Pixel différent, ce qui semble causer un problème pour l'ARKit. Cela nécessite YUV, et je ne sais pas comment changer nativement le format des pixels de la caméra à cela. J'ai donc cette erreur quand j'essaie de lancer ARKit après les autres;iOS; Format de pixel non pris en charge

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. }

Au moins, c'est ce que je pense que le problème est; que ce n'est pas le format en YUV. Toute aide serait très appréciée. . Merci.

Répondre

2

YUV est un espace colorimétrique, il existe plusieurs formats.

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

875704438 se traduit 420v (NV12) ou kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:

kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v' 

Vous avez donc en fait un format de pixel YUV, en particulier le biplan avec une plage vidéo.

Le Arkit docs ne mentionnent le format biplan YUV, mais pas le type de gamme:

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

Cependant, l'unité Arkit Plugin effectue une vérification pour kCVPixelFormatType_420YpCbCr8BiPlanarFullRange dans didUpdateFrame:

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

Donc, en conclusion il pourrait ne pas aimer le fait que ce n'est pas la gamme complète, mais je n'ai aucun moyen facile de le tester. Peut-être que vous pouvez essayer de forcer la gamme complète si la caméra et les autres modules le supportent. Veillez à ne plus utiliser d'images .jpg.

+0

Merci pour votre aide. Comment devrais-je forcer la gamme complète? Je ne suis pas un développeur xcode natif. –

+0

@OliverJones Désolé, moi non plus. Le paramètre ne semble pas être exposé dans ARKit. Vuforia vous permet de définir [YUV] (https://library.vuforia.com/articles/Solution/Working-with-the-Camera#How-To-Access-the-Camera-Image-in-Unity) mais ce n'est pas le cas Je dis quel type de format YUV il utilise. Et c'est en supposant que le problème sous-jacent est ce que ARKit rapporte réellement et pas un effet secondaire de quelque chose d'autre (appareil photo non libéré, un autre bug). – aergistal

0

iOS veut que vous utilisiez des images .png. J'ai eu le même avertissement/erreur dans Swift 4 et XCode 9 Beta.

+0

Comment est-ce que je fais ceci? Il appelle l'ARKit natif. –