Tutoriel sur l'archivage sous iOS (Objective-C)

Vue d'ensemble

L'API d'archivage d'OpenTok vous permet d'enregistrer les flux audio-vidéo d'une session au format MP4. Vous utilisez du code côté serveur pour démarrer et arrêter les enregistrements d'archivage.

Configuration du serveur

Pour archiver les sessions OpenTok, vous devez disposer d'un serveur Configuration. Il existe de nombreuses façons de mettre en place un système d'archivage à l'aide d'un serveur, mais dans le cadre de ce tutoriel, nous allons installer rapidement un serveur PHP simple.

Pour lancer le serveur, il suffit de cliquer sur le bouton « Heroku » ci-dessous. Vous serez alors redirigé vers le site web de Heroku et invité à saisir votre clé API OpenTok et votre secret API — vous pouvez retrouver ces informations sur la page de votre projet dans votre Video API Account. Si vous n'avez pas d'account Heroku, vous devrez vous inscrire (c'est gratuit).

Deploy

Envie de découvrir le code ? Le bouton ci-dessus lance le code du serveur à partir du apprentissage-opentok-php Dépôt GitHub. Rendez-vous sur ce dépôt pour consulter le code ainsi que la documentation complémentaire ; vous pouvez même créer une branche dérivée du dépôt et y apporter des modifications avant le déploiement.

Configuration de votre projet

Pour suivre ce tutoriel :

  1. Cloner OpenTok Exemples d'applications iOS référentiel sur GitHub :

    git clone https://github.com/opentok/opentok-ios-sdk-samples.git
    
  2. Dans le terminal, cd dans le sous-répertoire « Archiving » du projet, puis exécutez pod install.

  3. Ouvrez votre projet dans Xcode en double-cliquant sur le nouveau fichier Archiving.xcworkspace situé dans le répertoire Archiving.

  4. Ouvrez le fichier Config.h, puis définissez le SAMPLE_SERVER_BASE_URL chaîne à l'URL de base du serveur qui implémente le apprentissage-opentok-php projet. Ce serveur fournit l'identifiant de session et les jetons OpenTok à l'application iOS d'exemple. Pour plus d'informations, consultez Configuration du serveur.

Important : Vous ne pouvez archiver que les sessions qui utilisent le Routeur multimédia OpenTok (sessions dont le mode « médias » est défini sur « routé »). La valeur par défaut apprentissage-opentok-php Le code utilisé par cette application didactique repose sur des sessions routées.

Découverte du code

Remarque : L'exemple d'archivage s'appuie sur le Chat vidéo de base pour Objective-C, mais il existe également un tutoriel sur les bases du chat vidéo dans Swift.

L'exemple d'archivage ajoute les fonctionnalités suivantes :

  • Appuyez sur le Commencer l'enregistrement bouton.

    Cela lance l'enregistrement des flux audio et vidéo sur le serveur multimédia OpenTok.

  • Appuyez sur le Arrêter l'enregistrement bouton pour arrêter l'enregistrement.

  • Appuyez sur le Voir l'enregistrement bouton permettant de visionner l'enregistrement dans le navigateur Web.

Dans le fichier Config.h, vous devez définir la constante suivante en indiquant l'URL de base du service Web que l'application appelle pour démarrer l'enregistrement, l'arrêter et lire la vidéo enregistrée :

#define SAMPLE_SERVER_BASE_URL

Si vous ne définissez pas cette chaîne, les boutons « Démarrer l'enregistrement », « Arrêter l'enregistrement » et « Afficher les archives » ne seront pas disponibles dans l'application.

Lorsque l'utilisateur clique sur les boutons « Démarrer l'enregistrement » et « Arrêter l'enregistrement », l'application appelle la fonction [self startArchive:] et [self stopArchive:] méthodes. Celles-ci appellent des services Web qui, à leur tour, appellent du code côté serveur pour lancer et arrêter les enregistrements d'archive.

Lorsque l'enregistrement d'archive démarre, la mise en œuvre de la [OTSessionDelegate session:archiveStartedWithId:name:] est appelée :

- (void)     session:(OTSession*)session
archiveStartedWithId:(NSString *)archiveId
                name:(NSString *)name
{
    NSLog(@"session archiving started with id:%@ name:%@", archiveId, name);
    _archiveId = archiveId;
    _archiveIndicatorImg.hidden = NO;
    if (SAMPLE_SERVER_BASE_URL) {
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn setTitle: @"Stop recording" forState:UIControlStateNormal];
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn removeTarget:self
                                  action:NULL
                        forControlEvents:UIControlEventTouchUpInside];
        [_archiveControlBtn addTarget:self
                               action:@selector(stopArchive)
                     forControlEvents:UIControlEventTouchUpInside];
    }
}

Cela entraîne la _archivingIndicatorImg image (définie dans le storyboard principal) à afficher. La méthode enregistre l'ID de l'archive (qui identifie celle-ci) dans un archiveId propriété. Cette méthode modifie également le libellé du bouton de contrôle d'archivage, qui devient « Arrêter l'enregistrement ».

Lorsque l'utilisateur clique sur le bouton « Arrêter l'enregistrement », l'application transmet l'identifiant de l'archive au service web, qui met fin à l'enregistrement de l'archive.

Lorsque l'enregistrement d'archive s'arrête, la mise en œuvre de la [OTSessionDelegate session:archiveStoppedWithId:] est appelée :

- (void)     session:(OTSession*)session
archiveStoppedWithId:(NSString *)archiveId
{
    NSLog(@"session archiving stopped with id:%@", archiveId);
    _archiveIndicatorImg.hidden = YES;
    if (SAMPLE_SERVER_BASE_URL) {
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn setTitle: @"View recording" forState:UIControlStateNormal];
        [_archiveControlBtn removeTarget:self
                                  action:NULL
                        forControlEvents:UIControlEventTouchUpInside];
        [_archiveControlBtn addTarget:self
                               action:@selector(loadArchivePlaybackInBrowser)
                     forControlEvents:UIControlEventTouchUpInside];
    }
}

Cela entraîne la _archivingIndicatorImg image (définie dans le storyboard principal) à afficher. Il modifie également le libellé du bouton de contrôle d'archivage, qui devient « Afficher les archives ». Lorsque l'utilisateur clique sur ce bouton, le [self loadArchivePlaybackInBrowser:] Cette méthode ouvre une page Web (dans Safari) qui affiche l'enregistrement d'archive.

Notes :

  • Dans la plupart des applications, l'accès à l'enregistrement d'archive ne serait pas accordé à chaque utilisateur final.

  • Vous pouvez avoir des sessions automatiquement archivées, qui sont enregistrées chaque fois qu'un client commence à publier un flux.

  • Vous devrez configurer une cible Amazon S3 ou Microsoft Azure pour le stockage de vos enregistrements d'archives.

Pour plus d'informations sur l'archivage, voir la page Guide du développeur sur l'archivage OpenTok.

Félicitations ! Vous venez de terminer le tutoriel sur l'archivage pour iOS.
Vous pouvez continuer à tester et à modifier le code que vous avez développé ici, ou consulter le Prochaines étapes ci-dessous.

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 :