Grabación de vídeo personalizada (Android)

Visión general

Este tutorial explica paso a paso los pasos necesarios para realizar modificaciones en el capturador de vídeo de tu aplicación OpenTok para Android.

Configuración de tu proyecto

El código de esta sección está disponible en el proyecto Basic-Video-Capturer-Camera-2-Java del archivo ejemplos-del-SDK-de-vídeo-de-Vonage-para-Android repositorio. Si aún no lo has hecho, tendrás que clonar el repositorio en un directorio local. En la línea de comandos, ejecuta:

git clone git@github.com:opentok/opentok-android-sdk-samples.git

Abra el Cámara básica de captura de vídeo 2 - Java proyecto en Android Studio para seguir el tutorial.

Explorar el código

En este ejemplo, la aplicación utiliza un capturador de vídeo personalizado para duplicar una imagen de vídeo. Esto se hace simplemente para ilustrar los principios básicos de la configuración de un capturador de vídeo personalizado.

MirrorVideoCapturer es una clase personalizada que hereda de la BaseVideoCapturer clase (definida en el SDK de OpenTok para Android). La BaseVideoCapturer La clase te permite definir un capturador de vídeo personalizado para que lo utilice un editor de OpenTok:

publisher = new Publisher.Builder(MainActivity.this)
    .capturer(new MirrorVideoCapturer(MainActivity.this))
    .build();

El getCaptureSettings() El método proporciona los parámetros que utiliza el 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;
}

El BaseVideoCapturer.CaptureSetting clase (que define el capturerSettings (propiedad) viene definida por el SDK de OpenTok para Android. En este código de ejemplo, el formato del capturador de vídeo se configura para utilizar NV21 como formato de píxeles, con un número concreto de fotogramas por segundo, una altura concreta y una anchura concreta.

El BaseVideoCapturer startCapture() El método se invoca cuando un emisor comienza a grabar vídeo para enviarlo como transmisión a la sesión de OpenTok. Esto ocurrirá después de que el Session.publish(publisher) Se llama al método:

@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;
}

¡Enhorabuena! Has completado el tutorial de Custom Video Capturer para Android.
Puedes seguir probando y modificando el código que has creado aquí, o echar un vistazo a la Próximos pasos abajo.

Próximos pasos

Cuando hayas terminado aquí, sigue desarrollando y mejorando tu aplicación de OpenTok con estos útiles recursos: