Swift
Den Screen Capturer erstellen
Das Vonage SDK erwartet einen benutzerdefinierten Video-Capturer, der die folgenden Anforderungen erfüllt OTVideoCapture. Eine neue Datei erstellen ScreenCapturer.swift und umsetzen:
- Einen Verweis auf die zu erfassende Ansicht speichern - auch wenn unsere Anwendung in SwiftUI eingerichtet ist, ist der einfachste Weg, dies zu tun, mit
UIViewdie wir an den Capturer übergeben, alternativ kann dies auch mit einemUIViewRepresentableUmschlag. - Regelmäßiges Rendern der Ansicht - Verwendung
drawHierarchy(in:afterScreenUpdates:). - Umrechnen in
CVPixelBuffer/OTVideoFrame- und übergibt Frames anvideoCaptureConsumer.
Eine Ansicht einfangen
Kopieren
import Foundation
import UIKit
import OpenTok
class ScreenCapturer: NSObject, OTVideoCapture {
var videoContentHint: OTVideoContentHint
var videoCaptureConsumer: OTVideoCaptureConsumer?
private let captureView: UIView
private let captureQueue = DispatchQueue(label: "screen-capture")
private var timer: DispatchSourceTimer
private var capturing = false
private var videoFrame: OTVideoFrame
private var pixelBuffer: CVPixelBuffer?
init(withView view: UIView) {
self.videoContentHint = .none
self.captureView = view
self.timer = DispatchSource.makeTimerSource(flags: .strict, queue: captureQueue)
self.videoFrame = OTVideoFrame(format: OTVideoFormat(argbWithWidth: 0, height: 0))
}
private func captureFrame() -> UIImage {
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, false, 0)
defer { UIGraphicsEndImageContext() }
captureView.drawHierarchy(in: captureView.bounds, afterScreenUpdates: false)
return UIGraphicsGetImageFromCurrentImageContext() ?? UIImage()
}
// Implement initCapture, start, stop, releaseCapture, isCaptureStarted, captureSettings
// and feed frames to videoCaptureConsumer. See ScreenCapturer.swift for full implementation.
}
Kopieren Sie die vollständige ScreenCapturer.swift Implementierung aus diesem Beispielprojekt. Es behandelt:
- Timer-basierte Aufnahme mit ~10 fps
- Größenanpassung und Auffüllen für Encoder-Kompatibilität
CVPixelBufferErstellung undOTVideoFrameLieferung
Bildschirmfreigabe
Erfahren Sie, wie Sie mit der Vonage Video API-Plattform eine Screensharing-Funktion implementieren können.
Schritte
1
Einführung2
Erste Schritte3
Ein neues Projekt erstellen4
Hinzufügen des Vonage Video SDK5
Authentifizierung einrichten6
Den Screen Capturer erstellen7
Wurzelansicht für Vollbild-Capture freigeben8
Wurzelansicht für Vollbild-Capture freigeben9
Zusammenfassung10
Schlussfolgerung