Swift

Erfassen von Videobildern

Dieses Beispiel zeigt Ihnen, wie Sie einen benutzerdefinierten Video-Capturer verwenden, der die Gerätekamera als Videoquelle nutzt. Um die Kameraimplementierung zu verwenden, instanziieren Sie den Kamera-Capturer in Ihrem VonageVideoManager:

Initialisieren und Konfigurieren des Video-Capturers

Der Initialisierer ruft size(from:) um die Auflösung zu bestimmen und eine serielle Dispatch-Warteschlange für die Erfassung von Bildern einzurichten, um die UI-Warteschlange nicht zu beeinträchtigen.

Die Umsetzung der initCapture verwendet die AVFoundation Rahmen, um die Kamera für die Aufnahme von Bildern zu konfigurieren. Es erstellt eine AVCaptureSessionein, stellt das Eingabegerät ein und konfiguriert eine AVCaptureVideoDataOutput:

Der Zugriff auf die mit dieser Methode erfassten Bilder erfolgt über die Methode AVCaptureVideoDataOutputSampleBufferDelegate.

Der zweite Teil der initCapture konfiguriert die Bildrate:

Die bestFrameRate(for:) Methode gibt die beste Bildrate für das Aufnahmegerät zurück:

Aufnahme von Bildern für das Video des Herausgebers

Die start Methode startet die AVCaptureSession:

Die Delegierungsmethode captureOutput(_:didOutput:from:) wird aufgerufen, wenn ein neues Videobild verfügbar ist.

Diese Methode führt Folgendes aus:

  1. Erzeugt eine OTVideoFrame Instanz.
  2. Weist einen Speicherpuffer zu.
  3. Kopiert Bilddaten aus dem CVImageBuffer (NV12-Format) in den manuellen Puffer. NV12 hat zwei Ebenen (Y und UV), die sequentiell kopiert werden.
  4. Versieht den Rahmen mit einem Zeitstempel und einer Ausrichtung.
  5. Anrufe consumeFrameund übergibt den Rahmen an das Vonage SDK.