UIImagePickerController: obtención de captura de imágenes desde video

Estoy intentando extraer un marco de un video como una image. El video se graba con UIImagePickerController.

Cuando el video ha sido grabado, obtengo su URL y la carga usando AVURLAsset. Luego creo un AVAssetReader y AVAssetReaderTrackOutput para get los frameworks individuales.

Cuando obtengo los cuadros como CMSampleBufferRef, los paso al método imageFromSampleBuffer de Apple, que debería devolver un UIImage. Este método funcionó bien cuando obtuve frames usando una AVCaptureSession, pero cuando uso un video grabado a través de UIImagePickerController, esta línea devuelve 0x0:

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 

Donde sampleBuffer es el CMSampleBufferRed que paso.

Revisé el valor de sampleBuffer a través del depurador y se veía bien (no era 0x0). ¿Hay alguna razón por la que CMSampleBufferGetImageBuffer devolvería 0x0?

O bien, ¿hay otra forma de extraer una única ttwig de video de un file MOV y savela como UIImage?

Gracias.

Encontré la solución. Debe establecer el formatting de píxel en la configuration pasada al inicializar un AVAssetReaderTrackOutput.

Pasé el siguiente dictionary de configuration:

 NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey; NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]; NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key]; 

Espero que esto ayude a alguien más.