Leer video frame-by-frame bajo iOS

Estoy buscando una manera de recuperar los cuadros individuales de un video usando iOS API. Intenté usar AVAssetImageGenerator, pero parece que solo proporciona un marco al segundo más cercano, que es un poco demasiado duro para mi uso.

De lo que entiendo de la documentation, un conducto de AVAssetReader, AVAssetReaderOutput y CMSampleBufferGetImageBuffer, podría hacer algo pero estoy atrapado con un CVImageBufferRef. Con esto estoy buscando una manera de get un CGImageRef o un UIImage pero no lo he encontrado.

No se necesita time real y cuanto más me apego a la API proporcionada, mejor.

¡Muchas gracias!

Edit: Basado en este sitio: http://www.7twenty7.com/blog/2010/11/video-processing-with-av-foundation y esta pregunta: cómo convertir un CVImageBufferRef a UIImage Estoy cerca de una solución . Problema, el AVAssetReader deja de leer después del primer copyNextSampleBuffer sin darme nada (el sampleBuffer es NULL).

MPMoviePlayerController puede leer el video. No entiendo lo que está mal.

Los dos enlaces anteriores responden realmente a mi pregunta y el copyNextBufferSample vacío es un problema con iOS SDK 5.0b3, funciona en el dispositivo.

AVAssetImageGenerator tiene tolerancias pnetworkingeterminadas muy sueltas para el time de fotogtwig exacto que se agarra. Tiene dos properties que determinan la tolerancia: requestedTimeToleranceBefore y requestedTimeToleranceAfter . Estas tolerancias son pnetworkingeterminadas para kCMTimePositiveInfinity , por lo que si desea times exactos, kCMTimeZero en kCMTimeZero para get cuadros exactos.

(Puede tomar más time capturar los cuadros exactos que los cuadros aproximados, pero usted declara que el time real no es un problema).

Utilice AVReaderWriter . Aunque es un código de ejemplo de OS X Apple, AVFoundation está disponible en ambas plataforms con pequeños cambios.