2012-07-27 14 views
8

Estoy usando AVFoundation para mostrar un video en mi UIView a través de AVCaptureVideoPreviewOverlay. Luego uso AVStillImageOutput- captureStillImageAsynchronouslyFromConnection : para capturar una imagen fija del video con el valor predeterminado AVCaptureSessionPresetPhoto.¿Cómo pauso el video en el momento exacto en que capturo una foto?

Me estoy congelando el vídeo usando AVCaptureSession 's - stopRunning en el bloque de terminación - captureStillImageAsynchronouslyFromConnection se mencionó anteriormente. Sin embargo, es demasiado tarde y el video continúa funcionando mientras se toma la imagen fija, por lo que la congelación es uno o dos segundos más tarde. Cuando visualizo la imagen, aparece un salto.

¿Cómo puedo congelar el video en el momento exacto en que se toma la foto?

+0

¿Realiza '-stopRunning' como la primera acción en su bloque de finalización? Otras operaciones en ese bloque pueden llevar una cantidad significativa de tiempo, por lo que querrás que sea lo primero que suceda allí. –

+0

stopRunning es la primera acción – user1130254

+0

¿Está capturando sus marcos de video en el hilo principal o en el hilo de fondo? –

Respuesta

1

Casi un año después ... Su enfoque es completamente incorrecto. En lugar de intentar pausar el video en el momento preciso en que se captura la imagen, ¿por qué no pausa el video y luego captura esa imagen en pausa? Para un usuario no hace ninguna diferencia, para un desarrollador no tiene que preocuparse por la precisión exacta.

Reiterar mi idea, si hace una pausa un video y flash blanco visual y reproducir un clic el usuario va a pensar que acaba de capturar ese marco sin tener en cuenta si está o no. En realidad, podrías considerar pausar video de la misma manera que capturar una imagen sin guardarla.

Cuestiones relacionadas