¿Cómo grabar pantalla a video en iPhone con openGL (ver capa de vista previa) y elementos UIkit?

He buscado en todas partes y he intentado mezclar y combinar diferentes bits de código, pero no he encontrado nada que funcione ni nadie con la misma pregunta.

Básicamente, quiero poder crear demostraciones de video de aplicaciones para iPhone que incluyan elementos UIKit estándar y también la imagen que proviene de la cámara (capa de vista previa de video). No quiero usar airPlay o el simulador de iOS para proyectar en el escritorio y luego capturar porque quiero poder hacer videos afuera en público. He sido capaz de capturar en vídeo la pantalla con éxito con este código pero con la capa de vista previa de video en blanco. Leí que es porque usa openGL y lo que estoy capturando es de la CPU, no de la GPU. Usé con éxito GPUImage de Brad Larson para capturar la capa de vista previa de video, pero no captura el resto de UIView. He visto un código que combina ambos y los convierte en una imagen, pero no estoy seguro de si eso sería demasiado lento para la captura de video en tiempo real. ¿Alguien me puede apuntar en la dirección correcta?

preguntado el 27 de julio de 12 a las 06:07

No sé nada sobre el iPhone, pero si tiene control sobre el código OpenGL, puede obtener el contenido con glReadPixels (¡lento!) o convertirlo en una textura. Luego mezcle con la captura de pantalla del lado de la CPU. -

Gracias por el consejo. He comprobado el renderizado a una textura. Sin embargo, no estoy seguro de dónde colocar el código de inicialización y el código de captura. La función de captura de UIView que estoy usando actualmente está encapsulada dentro de una clase separada de la clase de procesamiento de la cámara. ¿Debería mover esa funcionalidad dentro de la devolución de llamada CaptureOutput de mi clase de procesamiento de cámara? Esperaba mantenerlo independiente para poder conectarlo a cualquier aplicación. El hecho de que no haya ningún código en ninguna parte de la red que pueda vincular CPU+GPU en video me hace pensar que esto puede no ser posible, o simplemente demasiado lento.

Como dije, no sé nada sobre estas clases de iPhone. RenderToTexture: necesita una devolución de llamada al principio para configurar la textura, una devolución de llamada justo antes del procesamiento para configurar el búfer de fotogramas de destino y una devolución de llamada después del procesamiento para obtener la textura. glReadPixels: solo necesita una devolución de llamada después del renderizado. -

1 Respuestas

Puede que no sea la solución más limpia, pero funcionará de todos modos: ¿consideraste hacer jailbreak? Espero que Apple me demande por esto, pero si realmente desea grabar su pantalla, simplemente instale una grabadora de pantalla. Se pueden encontrar suficientes opciones: http://www.google.be/search?q=iphone+jailbreak+record+screen

Y si no te gusta: recupera tu teléfono para una copia de seguridad anterior.

(para que conste: estoy en contra del jailbreak y publicar esto desde el punto de vista de la productividad)

Respondido 06 ago 12, 00:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.