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 :
- Notions de base sur la Video API — Si ce n'est pas déjà fait, prenez quelques minutes pour découvrir le fonctionnement exact d'OpenTok
- Exemples de code — une sélection d'applications types qui explorent diverses fonctionnalités et cas d'utilisation d'OpenTok
- Guides du développeur — documentation détaillée sur toutes les fonctionnalités d'OpenTok
- Tutoriels supplémentaires — guides pas à pas pour la mise en œuvre d'autres fonctionnalités et cas d'utilisation d'OpenTok
- Référence du SDK Android — découvrez les méthodes et les événements associés au SDK Android d'OpenTok