Gravação personalizada de vídeo (Android)
Visão geral
Este tutorial explica as etapas necessárias para fazer alterações no capturador de vídeo do seu aplicativo OpenTok para Android.
Configurando seu projeto
O código desta seção está disponível no projeto Basic-Video-Capturer-Camera-2-Java do exemplos-do-SDK-de-vídeo-da-Vonage-para-Android repositório. Caso ainda não tenha feito isso, você precisará clonar o repositório em um diretório local. Na linha de comando, execute:
git clone git@github.com:opentok/opentok-android-sdk-samples.git
Abra o Câmera-básica-para-captura-de-vídeo-2-Java projeto no Android Studio para acompanhar.
Explorando o código
Neste exemplo, o aplicativo utiliza um capturador de vídeo personalizado para espelhar uma imagem de vídeo. Isso é feito simplesmente para ilustrar os princípios básicos da configuração de um capturador de vídeo personalizado.
MirrorVideoCapturer é uma classe personalizada que estende a BaseVideoCapturer classe (definida no SDK do OpenTok para Android). A BaseVideoCapturer A classe permite definir um capturador de vídeo personalizado para ser usado por um publisher do OpenTok:
publisher = new Publisher.Builder(MainActivity.this)
.capturer(new MirrorVideoCapturer(MainActivity.this))
.build();
O getCaptureSettings() O método fornece as configurações utilizadas pelo capturador de vídeo personalizado:
@Override
public synchronized CaptureSettings getCaptureSettings() {
CaptureSettings captureSettings = new CaptureSettings();
captureSettings.fps = desiredFps;
captureSettings.width = (null != cameraFrame) ? cameraFrame.getWidth() : 0;
captureSettings.height = (null != cameraFrame) ? cameraFrame.getHeight() : 0;
captureSettings.format = BaseVideoCapturer.NV21;
captureSettings.expectedDelay = 0;
return captureSettings;
}
O BaseVideoCapturer.CaptureSetting classe (que define o capturerSettings (propriedade) é definida pelo SDK do OpenTok para Android. Neste código de exemplo, o formato do capturador de vídeo está configurado para usar NV21 como formato de pixel, com um número específico de quadros por segundo, uma altura específica e uma largura específica.
O BaseVideoCapturer startCapture() O método é chamado quando um emissor começa a capturar um vídeo para ser enviado como um stream para a sessão do OpenTok. Isso ocorrerá após o Session.publish(publisher) o método é chamado:
@Override
public synchronized int startCapture() {
Log.d(TAG,"startCapture enter (cameraState: "+ cameraState +")");
if (null != camera && CameraState.OPEN == cameraState) {
return startCameraCapture();
} else if (CameraState.SETUP == cameraState) {
Log.d(TAG,"camera not yet ready, queuing the start until camera is opened");
executeAfterCameraOpened = () -> startCameraCapture();
} else {
throw new Camera2Exception("Start Capture called before init successfully completed");
}
Log.d(TAG,"startCapture exit");
return 0;
}
Parabéns! Você concluiu o tutorial do Custom Video Capturer para Android.
Você pode continuar experimentando e ajustando o código que desenvolveu aqui, ou conferir o Próximos passos abaixo.
Próximos passos
Quando terminar esta seção, continue desenvolvendo e aprimorando seu aplicativo OpenTok com estes recursos úteis:
- Noções básicas sobre a Video API — Se ainda não o fez, reserve alguns minutos para aprender exatamente como o OpenTok funciona
- Exemplos de código — uma coleção de aplicativos de exemplo que exploram diversos recursos e casos de uso do OpenTok
- Guias para desenvolvedores — documentação detalhada sobre todos os recursos e funcionalidades do OpenTok
- Tutoriais adicionais — guias passo a passo para a implementação de outros recursos e casos de uso do OpenTok
- Referência do SDK do Android — explore os métodos e eventos associados ao SDK do OpenTok para Android