Kotlin

Inicio de la captura

startCapture() es el siguiente método que debemos implementar. Es llamado por el SDK cuando el editor comienza a capturar (por ejemplo, después de que Session.publish(publisher)). Debería iniciar su bucle de captura o escucha. Como verás los frames aquí, son entregados por ImageReader.setOnImageAvailableListenerAsí que startCapture() señalará principalmente que la captura está activa.

Ciclo de vida:

  1. init() - Crear ImageReader e iniciar un hilo de fondo. En ImageReader proporciona una Surface que VirtualDisplay se convierte en.
  2. createVirtualDisplay() - Crear un VirtualDisplay respaldado por el ImageReader. El contenido de la pantalla se renderiza en esta pantalla.
  3. startCapture() - Se ejecuta cuando se inicia el editor. Marca la captura como activa.
  4. stopCapture() - Libere la pantalla virtual, detenga la proyección multimedia y limpie.

Alimentación de fotogramas al SDK

Cuando el sistema renderiza un nuevo fotograma en el VirtualDisplay, ImageReader lo entrega a través de onImageAvailable:

En provideIntArrayFrame definido por el método BaseVideoCapturer envía una matriz entera de datos al editor, que se utilizará para el siguiente fotograma de vídeo publicado.

Si el editor sigue capturando vídeo, el hilo vuelve a empezar tras otro 1/15 de segundo, de modo que la capturadora sigue suministrando al editor nuevos fotogramas de vídeo para publicar.