Tutoriel sur le partage d'écran (iOS)
Vue d'ensemble
Ce tutoriel explique comment utiliser le SDK OpenTok pour iOS afin de diffuser une vidéo de partage d'écran, en utilisant l'écran de l'appareil comme source vidéo du flux.
Configuration de votre projet
Le code de cette section se trouve dans la section Partage d'écran du dossier opentok-ios-sdk-échantillons projet sur GitHub. Si ce n'est pas déjà fait, vous devrez cloner le dépôt dans un répertoire local — vous pouvez le faire à l'aide de la ligne de commande :
git clone https://github.com/opentok/opentok-ios-sdk-samples.git
L'application « Screen-Sharing » vous montre comment capturer l'écran (une UIView) à l'aide d'un outil de capture vidéo personnalisé. Ouvrez le projet dans Xcode pour suivre les étapes.
Découverte du code
Le logiciel de capture vidéo personnalisé, TBScreenCapture, est d'abord initialisé à l'aide d'un objet « display link ». Cet objet appelle la fonction captureView méthode à 30 images par seconde.
. Les createPixelBuffer et createCGContextFromPixelBuffer Des méthodes d'aide préparent le terrain pour stocker l'instantané de l'écran principal. Ce tampon est ensuite transmis à la videoCaptureConsumer dans le captureView méthode.
- (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);
});
});
}
L'instantané est réalisé à l'aide de [self.view.layer renderInContext:self->_bitmapContext].
L'application d'exemple utilise les méthodes du protocole OTVideoCapture pour gérer l'objet de liaison d'affichage ainsi qu'un _capturing drapeau. Le captureSettings Cette méthode définit le paramètre « videoFormat » sur OTPixelFormatARGB.
- (int32_t)captureSettings:(OTVideoFormat*)videoFormat
{
videoFormat.pixelFormat = OTPixelFormatARGB;
return 0;
}
La classe ViewController crée une session, instancie les abonnés et configure l'éditeur.
L'éditeur est le pilier de l'application, et ses propriétés et méthodes — videoType, audioFallbackEnabled, videoContentHintet setVideoCapture — se déroulent dans le doPublish méthode :
- (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;
...
}
Enfin, l'application affiche un compte à rebours sous forme de texte. Elle capture cet affichage et le partage avec ses abonnés :
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];
});
});
Félicitations ! Vous venez de terminer le tutoriel sur le partage d'écran sous iOS.
Vous pouvez continuer à tester et à modifier le code que vous avez développé ici, ou consulter le Prochaines étapes ci-dessous. Pour plus d'informations sur le partage d'écran avec OpenTok, consultez la Guide du développeur OpenTok sur le partage d'écran pour iOS.
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 iOS — découvrez les méthodes et événements spécifiques associés au SDK iOS d'OpenTok