iOS アーカイブ作成チュートリアル(Objective-C)

概要

OpenTokのアーカイブAPIを使用すると、セッション内の音声・動画ストリームをMP4ファイルとして記録できます。アーカイブ録画の開始と停止は、サーバーサイドのコードで行います。

サーバーの設定

OpenTokのセッションをアーカイブするには、以下のものが必要です。 サーバー セットアップ。サーバーを使ったアーカイブの実装方法は数多くありますが、このチュートリアルでは、簡単なPHPサーバーをさっと立ち上げてみます。

サーバーを起動するには、下の「Heroku」ボタンをクリックするだけです。クリックするとHerokuのウェブサイトに遷移し、OpenTokのAPIキーとAPIシークレットの入力を求められます。これらの値は、プロジェクトページで取得できます。 Video APIアカウント. HerokuのAccountをお持ちでない場合は、登録する必要があります(無料です)。

Deploy

コードを詳しく見てみたいですか? 上のボタンをクリックすると、 learning-opentok-php GitHubのリポジトリ。リポジトリにアクセスして、コードや追加のドキュメントを確認してください。また、リポジトリをフォークして、デプロイ前に変更を加えることも可能です。

プロジェクトの設定

このチュートリアルを進めるには:

  1. OpenTokをクローンする iOSのサンプルアプリ GitHub上のリポジトリ:

    git clone https://github.com/opentok/opentok-ios-sdk-samples.git
    
  2. ターミナルで、 cd プロジェクトの「Archiving」サブディレクトリに配置し、その後、以下を実行します。 pod install.

  3. Archiving ディレクトリ内にある新しい Archiving.xcworkspace ファイルをダブルクリックして、Xcode でプロジェクトを開きます。

  4. Config.h ファイルを開き、 SAMPLE_SERVER_BASE_URL を実装するサーバーのベースURLへの文字列 learning-opentok-php プロジェクト。このサーバーは、iOS サンプルアプリに OpenTok のセッション ID とトークンを提供します。詳細については、以下を参照してください。 サーバーの設定.

重要だ: アーカイブできるのは、 OpenTok メディアルーター (メディアモードが「ルーティング」に設定されているセッション)。デフォルトでは learning-opentok-php このチュートリアルアプリで使用されているコードは、ルーティングされたセッションを採用しています。

コードを詳しく見ていく

注: このアーカイブのサンプルは、 Objective-C用Basic-Video-Chat、ですが、Basic-Video-Chatのチュートリアルも スウィフト.

このアーカイブのサンプルでは、以下の機能が追加されています:

  • をタップして 録音を始める ボタンをクリックする。

    これにより、OpenTok Media Server でのオーディオおよびビデオストリームの記録が開始されます。

  • をタップして 録画を停止する ボタンをタップして録画を停止します。

  • をタップして 録画を見る このボタンをクリックすると、Webブラウザで録画映像を視聴できます。

Config.h ファイルでは、アプリがアーカイブ録画の開始、録画の停止、および録画した動画の再生を行うために呼び出す Web サービスのベース URL を、以下の定数に設定します。

#define SAMPLE_SERVER_BASE_URL

この文字列を設定しない場合、アプリ内で「録画開始」、「録画停止」、「アーカイブを表示」の各ボタンは利用できなくなります。

ユーザーが「録画開始」ボタンや「録画停止」ボタンをクリックすると、アプリは [self startArchive:] そして [self stopArchive:] メソッド。これらは、アーカイブ録画の開始および停止を行うサーバーサイドのコードを呼び出すWebサービスを呼び出します。

アーカイブ録画が開始されると、 [OTSessionDelegate session:archiveStartedWithId:name:] メソッドが呼び出される:

- (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];
    }
}

これにより、 _archivingIndicatorImg (メインストーリーボードで定義された)画像を表示します。このメソッドは、アーカイブID(アーカイブを識別するID)を archiveId プロパティ。また、このメソッドはアーカイブ制御ボタンのテキストを「記録を停止」に変更します。

ユーザーが「録画停止」ボタンをクリックすると、アプリはアーカイブIDをウェブサービスに渡し、ウェブサービスがアーカイブの録画を停止します。

アーカイブ録画が停止すると、 [OTSessionDelegate session:archiveStoppedWithId:] メソッドが呼び出される:

- (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];
    }
}

これにより、 _archivingIndicatorImg (メインストーリーボードで定義された)画像を表示します。また、アーカイブ制御ボタンのテキストを「アーカイブを表示」に変更します。ユーザーがこのボタンをクリックすると、 [self loadArchivePlaybackInBrowser:] このメソッドは、アーカイブ録画を表示するウェブページを(Safariで)開きます。

注釈

  • ほとんどのアプリケーションでは、アーカイブ録画の制御権は各エンドユーザーに付与されることはありません。

  • クライアントがストリームの公開を開始するたびに記録されるセッションを、自動的にアーカイブすることができます。

  • アーカイブ録画の保存先として、Amazon S3またはMicrosoft Azureを設定します。

アーカイブの詳細については OpenTok アーカイブ開発者ガイド.

おめでとうございます!iOS向けアーカイブチュートリアルを完了しました。
ここで作成したコードをさらに試したり調整したりすることもできますし、あるいは 次のステップ の下にある。

次のステップ

ここでの作業が終わったら、以下の役立つリソースを活用して、OpenTokアプリケーションの構築と機能強化を続けてください: