Estoy buscando la manera más rápida de decodificar los marcos de un video de MPEG local 4 en el iPhone. Simplemente me interesan los valores de luminancia de los píxeles en cada 10º fotograma. No necesito renderizar el video en ningún lado.Decodificar marcos de video en la GPU de iPhone
He probado ffmpeg, AVAssetReader, ImageAssetGenerator, OpenCV y MPMoviePlayer, pero son demasiado lentos. La velocidad más rápida que puedo obtener es ~ 2x (2 minutos de video escaneados en un minuto). Me gustaría algo más cerca de 10x.
Suponiendo que mis intentos anteriores no utilizaron la GPU, ¿hay alguna manera de lograr mi objetivo con algo que se ejecute en la GPU? Parece que OpenGL es principalmente para renderizar resultados, pero lo he visto como filtros para video entrante. Tal vez esa es una opción?
¡Gracias de antemano!
bummer Parece que necesito ser un asistente WWDC 2011 para obtener esa muestra. Todavía me preocupa que esto sea una transcodificación en tiempo real. Quiero obtener 15x velocidades (15 minutos de video escaneados en 1 minuto). Creo que el cuello de la botella está en la decodificación del marco. –
@simon.d - Describo la técnica utilizada en el ejemplo ChromaKey en mi respuesta aquí: http://stackoverflow.com/a/9704392/19679, y puede tomar mi código GPUImage para ver esto en acción para codificar películas. Sin embargo, aún no actualicé el código de lectura de mi película para usar cargas rápidas de textura. Debido al hecho de que los dispositivos iOS tienen hardware dedicado para decodificar H.264, me siento razonablemente seguro de que no obtendrá un análisis más rápido de las películas que el uso de AVFoundation con las cargas de textura rápida de iOS 5.0. –
El código de ejemplo RosyWriter de Apple también demuestra este AVCaptureSession -> enlace OpenGL. Ver [aquí] (https://developer.apple.com/library/ios/samplecode/RosyWriter/Introduction/Intro.html). – bcattle