texture texturas textura proyectos hechos graficacion cubo aplicar ios video opengl-es textures

texturas - iOS4: ¿cómo uso el archivo de video como una textura OpenGL?



texturas opengl (2)

Estoy tratando de mostrar el contenido de un archivo de video (digamos que sin el audio por el momento) en un objeto 3D mapeado con UV en OpenGL. He hecho bastante en OpenGL, pero no tengo idea de dónde comenzar en el manejo de archivos de video, y la mayoría de los ejemplos parecen ser para obtener cuadros de video de las cámaras, que no es lo que busco.

Por el momento, creo que si puedo obtener marcos individuales del video como CGImageRef, ¿me pregunto cómo puedo hacer esto? Tal vez incluso hay mejores formas de hacer esto? ¿Dónde debo comenzar y cuál es el formato de archivo más sencillo para la reproducción de videos en iOS? .mov?


Disculpas; escribiendo en un iPhone así que seré un poco breve.

Cree un AVURLAsset con la URL de su video, que puede ser una URL de archivo local si lo desea. Cualquier cosa que QuickTime pueda hacer está bien, entonces MOV o M4V en H.264 es probablemente la mejor fuente.

Consulte el recurso para pistas de tipo AVMediaTypeVideo. Deberías obtener solo uno a menos que tu video fuente tenga múltiples ángulos de cámara de algo así, así que solo al tomar ObjectAtIndex: 0 deberías darte el AVAssetTrack que deseas.

Úselo para crear un AVAssetReaderTrackOutput. Probablemente quiera especificar kCVPixelFormatType_32BGRA.

Crear un AVAssetReader usando el activo; adjunte la salida de la pista del lector de activos como salida. Y llama a startReading.

De ahora en adelante, puede llamar a copyNextSampleBuffer en la salida de la pista para obtener nuevos CMSampleBuffers, colocándolo en la misma posición que si estuviera recibiendo información de la cámara. De modo que puede bloquear eso para obtener contenidos de píxeles e insertarlos en OpenGL a través de la extensión BGRA de Apple.


Probablemente va a tener que usar una capa de jugador y aplanar su contenido en un contexto de mapa de bits. Consulte la documentación de AVPlayerLayer. El rendimiento puede ser muy pobre sin embargo.