Captura inicial: cableado en el ciclo de vida de Publisher
- Uso del capturador personalizado en Publisher
Independientemente de dónde crees tu editor (por ejemplo, en MainActivity o un gestor de llamadas específico), se pasa una instancia del capturador personalizado al 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 facilita tu 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á a la función de tu capturadorstartCapture()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 esquema general 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 en los que «aún 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). Gestión de errores: Si hay algún error grave (por ejemplo, si se ha llamado a `startCapture` demasiado pronto), lanza o indica 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
Descubre cómo configurar un capturador de vídeo básico utilizando el SDK de vídeo de Vonage.