Anleitung zur Bildschirmfreigabe (iOS)
Übersicht
In diesem Tutorial wird gezeigt, wie man mit dem OpenTok iOS SDK ein Bildschirmfreigabe-Video veröffentlicht, wobei der Bildschirm des Geräts als Quelle für das Stream-Video dient.
Einrichten Ihres Projekts
Der Code für diesen Abschnitt befindet sich in der Bildschirmfreigabe Ordner des opentok-ios-sdk-Beispiele Projekt auf GitHub. Falls Sie dies noch nicht getan haben, müssen Sie das Repository in ein lokales Verzeichnis klonen – dies können Sie über die Befehlszeile tun:
git clone https://github.com/opentok/opentok-ios-sdk-samples.git
Die Anwendung „Screen-Sharing“ zeigt Ihnen, wie Sie den Bildschirm (eine UIView) mithilfe eines benutzerdefinierten Video-Capturers aufzeichnen können. Öffnen Sie das Projekt in XCode, um die Anleitung mitzuverfolgen.
Den Code erkunden
Der benutzerdefinierte Video-Capturer „TBScreenCapture“ wird zunächst mit einem Display-Link-Objekt initialisiert. Dieses Objekt ruft die captureView Methode mit 30 Bildern pro Sekunde.
. Die createPixelBuffer und createCGContextFromPixelBuffer Hilfsmethoden bereiten die Speicherung des Momentaufnahmes des Hauptbildschirms vor. Dieser Puffer wird dann an die videoCaptureConsumer im captureView Methode.
- (instancetype)initWithView:(UIView *)view
{
self = [super init];
if (self) {
_view = view;
_queue = dispatch_queue_create("SCREEN_CAPTURE", NULL);
_screenScale = [[UIScreen mainScreen] scale];
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(captureView)];
_displayLink.preferredFramesPerSecond = 30.0;
_capturingSemaphore = dispatch_semaphore_create(1);
[self createPixelBuffer];
[self createCGContextFromPixelBuffer];
}
return self;
}
-(void)captureView
{
if (!(_capturing && self.videoCaptureConsumer)) {
return;
}
// Wait until consumeImageBuffer is done.
if (dispatch_semaphore_wait(_capturingSemaphore, DISPATCH_TIME_NOW) != 0) {
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.view.layer renderInContext:self->_bitmapContext];
// Don't block the UI thread
dispatch_async(self->_queue, ^{
CMTime time = [self getTimeStamp];
[self.videoCaptureConsumer consumeImageBuffer:self->_pixelBuffer
orientation:OTVideoOrientationUp
timestamp:time
metadata:nil];
// Signal for more frames
dispatch_semaphore_signal(self->_capturingSemaphore);
});
});
}
Der Schnappschuss wird aufgenommen mit [self.view.layer renderInContext:self->_bitmapContext].
Die Beispiel-App nutzt die Protokollmethoden von OTVideoCapture, um das Display-Link-Objekt zusammen mit einem _capturing Flag. Das captureSettings Die Methode setzt das videoFormat auf OTPixelFormatARGB.
- (int32_t)captureSettings:(OTVideoFormat*)videoFormat
{
videoFormat.pixelFormat = OTPixelFormatARGB;
return 0;
}
Die Klasse „ViewController“ erstellt eine Sitzung, instanziiert Abonnenten und richtet den Publisher ein.
Der Publisher ist das Herzstück der App, und seine Eigenschaften und Methoden — videoType, audioFallbackEnabled, videoContentHintund setVideoCapture — spielen in der doPublish Methode:
- (void)doPublish
{
...
[_publisher setVideoType:OTPublisherKitVideoTypeScreen];
// This disables the audio fallback feature when using routed sessions.
_publisher.audioFallbackEnabled = NO;
// Finally, wire up the video source.
TBScreenCapture* videoCapture =
[[TBScreenCapture alloc] initWithView:self.view];
[_publisher setVideoCapture:videoCapture];
_publisher.videoCapture.videoContentHint = OTVideoContentHintText;
...
}
Zu guter Letzt fügt die App eine Textanzeige mit einem laufenden Timer hinzu. Die App erfasst diese Anzeige und teilt sie mit den Abonnenten:
dispatch_source_set_event_handler(_timer, ^{
double timestamp = [[NSDate date] timeIntervalSince1970];
int64_t timeInMilisInt64 = (int64_t)(timestamp*1000);
NSString *mills = [NSString stringWithFormat:@"%lld", timeInMilisInt64];
dispatch_sync(dispatch_get_main_queue(), ^{
[self.timeDisplay setText:mills];
});
});
Herzlichen Glückwunsch! Du hast das Tutorial zur Bildschirmfreigabe für iOS abgeschlossen.
Du kannst den Code, den du hier entwickelt hast, weiter ausprobieren und anpassen oder dir die Nächste Schritte unten. Weitere Informationen zur Bildschirmfreigabe mit OpenTok finden Sie unter OpenTok-Entwicklerhandbuch zur Bildschirmfreigabe für iOS.
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
- iOS-SDK-Referenz – Entdecken Sie die spezifischen Methoden und Ereignisse im Zusammenhang mit dem OpenTok iOS-SDK