Swift

Captura de fotogramas de vídeo

Este ejemplo muestra cómo utilizar un capturador de vídeo personalizado utilizando la cámara del dispositivo como fuente de vídeo. Para utilizar la implementación de la cámara, instancie el capturador de cámara en su archivo VonageVideoManager:

Inicialización y configuración del capturador de vídeo

El inicializador llama a size(from:) para determinar la resolución y establece una cola de envío en serie para capturar imágenes, con el fin de no afectar a la cola de la interfaz de usuario.

La aplicación de initCapture utiliza el AVFoundation para configurar la cámara para capturar imágenes. Crea un AVCaptureSession, establece el dispositivo de entrada y configura un AVCaptureVideoDataOutput:

Se accede a los fotogramas capturados con este método a través de la función AVCaptureVideoDataOutputSampleBufferDelegate.

La segunda parte de initCapture configura la velocidad de fotogramas:

En bestFrameRate(for:) devuelve la mejor frecuencia de imagen para el dispositivo de captura:

Captura de fotogramas para el vídeo del editor

En start inicia el método AVCaptureSession:

El método delegado captureOutput(_:didOutput:from:) se llama cuando hay un nuevo fotograma de vídeo disponible.

Este método realiza lo siguiente:

  1. Crea un OTVideoFrame instancia.
  2. Asigna un búfer de memoria.
  3. Copia los datos de imagen del CVImageBuffer (formato NV12) en el búfer manual. NV12 tiene dos planos (Y y UV), que se copian secuencialmente.
  4. Etiqueta el fotograma con una marca de tiempo y una orientación.
  5. Llamadas consumeFramepasando el marco al SDK de Vonage.