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: