Captura inicial: cableado en el ciclo de vida de Publisher
- Uso del capturador personalizado en Publisher
Dondequiera que cree su editor (por ejemplo, en MainActivity o un gestor de llamadas dedicado), se pasa una instancia del capturador personalizado a la función Publisher.Builder:
publisher = Publisher.Builder(this@MainActivity)
.capturer(
MirrorVideoCapturer(
this@MainActivity,
Publisher.CameraCaptureResolution.HIGH,
Publisher.CameraCaptureFrameRate.FPS_30
)
)
.build()
Después de construir un Publisher y proporcione su MirrorVideoCapturer todos los vídeos salientes de ese editor proceden de su capturadora personalizada en lugar de la predeterminada.
- Una vez que cree un Publisher con su capturador personalizado y llame a
session.publish(editor), el SDK llamará al capturador de sustartCapture()método.
@Synchronized
override fun startCapture(): Int {
Log.d(TAG, "startCapture() enter (cameraState: $cameraState)")
val resume = Runnable {
initCamera()
scheduleStartCapture()
}
when (cameraState) {
CameraState.CLOSING -> executeAfterClosed = resume
CameraState.CLOSED -> resume.run()
else -> scheduleStartCapture()
}
Log.d(TAG, "startCapture() exit")
return 0
}
El flujo de alto nivel es el siguiente:
Comprobar el estado de la cámaraAsegúrate de que el recurso de cámara subyacente está inicializado y listo. Iniciar bucle de captura: Abra la cámara (si no está ya abierta). Inicie una solicitud de captura repetida (Camera2) o inicie el canal de previsualización (CameraX / Camera1). Gestionar los casos de "todavía no está listo: Si la configuración de la cámara aún está en curso, espere a que se abra la cámara para iniciar el proceso (evita condiciones de carrera). Tratamiento de errores: Si algo está fundamentalmente mal (por ejemplo, startCapture se llama demasiado pronto), lanza o señala un error.
Después de que startCapture() tenga éxito, tu capturador empieza a recibir fotogramas de la cámara y a enviarlos al SDK.
Captura de vídeo básica
Aprende a configurar una capturadora de video básica usando el SDK de video de Vonage.