Benutzerdefinierte Videoaufzeichnung (Android)
Übersicht
Dieses Tutorial führt Sie durch die erforderlichen Schritte, um Anpassungen am Video-Capturer in Ihrer OpenTok-Android-Application vorzunehmen.
Einrichten Ihres Projekts
Der Code für diesen Abschnitt ist im Basic-Video-Capturer-Camera-2-Java-Projekt des vonage-video-android-sdk-Beispiele Repo. Wenn Sie dies noch nicht getan haben, müssen Sie das Projektarchiv in ein lokales Verzeichnis klonen. Führen Sie in der Befehlszeile Folgendes aus:
git clone git@github.com:opentok/opentok-android-sdk-samples.git
Öffnen Sie die Einfache Videoaufzeichnung mit der Kamera 2 – Java Projekt in Android Studio, um die Entwicklung zu verfolgen.
Den Code erkunden
In diesem Beispiel verwendet die App einen benutzerdefinierten Video-Capturer, um ein Videobild zu spiegeln. Dies dient lediglich dazu, die Grundprinzipien der Einrichtung eines benutzerdefinierten Video-Capturers zu veranschaulichen.
MirrorVideoCapturer ist eine benutzerdefinierte Klasse, die die BaseVideoCapturer Klasse (definiert im OpenTok Android SDK). Die BaseVideoCapturer Mit dieser Klasse können Sie einen benutzerdefinierten Video-Capturer definieren, der von einem OpenTok-Publisher verwendet wird:
publisher = new Publisher.Builder(MainActivity.this)
.capturer(new MirrorVideoCapturer(MainActivity.this))
.build();
Die getCaptureSettings() Methode bietet Einstellungen, die von dem benutzerdefinierten Video-Capturer verwendet werden:
@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;
}
Die BaseVideoCapturer.CaptureSetting Klasse (die die capturerSettings (Eigenschaft) wird durch das OpenTok Android SDK definiert. In diesem Beispielcode ist das Format des Video-Capturers so eingestellt, dass NV21 als Pixelformat verwendet wird, mit einer bestimmten Anzahl von Bildern pro Sekunde, einer bestimmten Höhe und einer bestimmten Breite.
Die BaseVideoCapturer startCapture() Die Methode wird aufgerufen, wenn ein Publisher mit der Aufzeichnung von Video beginnt, das als Stream an die OpenTok-Sitzung gesendet werden soll. Dies geschieht nach dem Session.publish(publisher) Methode aufgerufen wird:
@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;
}
Herzlichen Glückwunsch! Du hast das Tutorial zum „Custom Video Capturer“ für Android abgeschlossen.
Du kannst den Code, den du hier entwickelt hast, weiter ausprobieren und anpassen oder dir die Nächste Schritte unten.
Nächste Schritte
Wenn Sie hier fertig sind, können Sie Ihre OpenTok-Application mit diesen hilfreichen Ressourcen weiter ausbauen und verbessern:
- Grundlagen der Video API – Falls Sie es noch nicht getan haben, nehmen Sie sich ein paar Minuten Zeit, um genau zu erfahren, wie OpenTok funktioniert.
- Code-Beispiele – eine Sammlung von Beispiel-Apps, die verschiedene OpenTok-Funktionen und Anwendungsfälle veranschaulichen
- Entwicklerhandbücher – ausführliche Dokumentation zu allen Funktionen und Merkmalen von OpenTok
- Weitere Tutorials – Anleitungen zur Implementierung weiterer OpenTok-Funktionen und Anwendungsfälle
- Android SDK-Referenz – Entdecken Sie die Methoden und Ereignisse des OpenTok Android SDK