Iniciando a captura: integração ao ciclo de vida do Publisher
- Como usar o capturador personalizado no Publisher
Onde quer que você crie sua editora (por exemplo, em MainActivity ou um gerenciador de chamadas dedicado), você passa uma instância do capturador personalizado para o Publisher.Builder:
publisher = Publisher.Builder(this@MainActivity)
.capturer(
MirrorVideoCapturer(
this@MainActivity,
Publisher.CameraCaptureResolution.HIGH,
Publisher.CameraCaptureFrameRate.FPS_30
)
)
.build()
Depois de criar um Publisher e forneça seu MirrorVideoCapturer Por exemplo: todo o vídeo transmitido por esse editor vem do seu capturador personalizado, em vez do capturador padrão.
- Depois de criar um Publisher com seu capturador personalizado e chamar
session.publish(editor), o SDK fará uma chamada para o capturador do usuáriostartCapture()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
}
O fluxo geral é o seguinte:
Verificar o estado da câmera: certifique-se de que o recurso de câmera subjacente esteja inicializado e pronto. Iniciar ciclo de captura: Abra a câmera (caso ainda não esteja aberta). Inicie uma solicitação de captura repetitiva (Camera2) ou inicie o pipeline de visualização (CameraX / Camera1). Lidar com casos do tipo “ainda não está pronto”: Se a configuração da câmera ainda estiver em andamento, adie o início efetivo até que a câmera seja aberta (isso evita condições de corrida). Tratamento de erros: Se houver algum problema grave (por exemplo, se a função startCapture for chamada muito cedo), deve-se lançar ou sinalizar um erro.
Após a função startCapture() ser executada com sucesso, seu capturador começa a receber quadros da câmera e a enviá-los para o SDK.
Captura básica de vídeo
Saiba como configurar um capturador de vídeo básico usando o SDK de vídeo da Vonage.