Capture vidéo personnalisée (Android)

Vue d'ensemble

Ce tutoriel vous guide à travers les étapes nécessaires pour apporter des modifications au module de capture vidéo de votre application OpenTok pour Android.

Configuration de votre projet

Le code de cette section est disponible dans le projet Basic-Video-Capturer-Camera-2-Java du projet vonage-video-android-sdk-samples repo. Si vous ne l'avez pas encore fait, vous devrez cloner le repo dans un répertoire local. Sur la ligne de commande, exécutez :

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

Ouvrir le Caméra de capture vidéo de base 2 - Java dans Android Studio.

Découverte du code

Dans cet exemple, l'application utilise un capteur vidéo personnalisé pour reproduire une image vidéo. Cela a pour seul but d'illustrer les principes de base de la configuration d'un capteur vidéo personnalisé.

MirrorVideoCapturer est une classe personnalisée qui étend la classe BaseVideoCapturer classe (définie dans le SDK Android d'OpenTok). La BaseVideoCapturer La classe vous permet de définir un capteur vidéo personnalisé destiné à être utilisé par un éditeur OpenTok :

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

Les getCaptureSettings() fournit les paramètres utilisés par le capteur vidéo personnalisé :

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

Les BaseVideoCapturer.CaptureSetting classe (qui définit le capturerSettings (propriété) est définie par le SDK Android d'OpenTok. Dans cet exemple de code, le format du capteur vidéo est configuré pour utiliser NV21 comme format de pixels, avec un nombre spécifique d'images par seconde, une hauteur spécifique et une largeur spécifique.

Les BaseVideoCapturer startCapture() La méthode est appelée lorsqu'un éditeur commence à capturer une vidéo destinée à être diffusée en continu vers la session OpenTok. Cela se produit après la Session.publish(publisher) est appelée :

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

Félicitations ! Vous venez de terminer le tutoriel sur Custom Video Capturer pour Android.
Vous pouvez continuer à tester et à modifier le code que vous avez développé ici, ou consulter le Prochaines étapes ci-dessous.

Prochaines étapes

Une fois que vous aurez terminé cette étape, poursuivez le développement et l'amélioration de votre application OpenTok à l'aide des ressources utiles suivantes :