iOS アーカイブ作成チュートリアル(Objective-C)
概要
OpenTokのアーカイブAPIを使用すると、セッション内の音声・動画ストリームをMP4ファイルとして記録できます。アーカイブ録画の開始と停止は、サーバーサイドのコードで行います。
サーバーの設定
OpenTokのセッションをアーカイブするには、以下のものが必要です。 サーバー セットアップ。サーバーを使ったアーカイブの実装方法は数多くありますが、このチュートリアルでは、簡単なPHPサーバーをさっと立ち上げてみます。
サーバーを起動するには、下の「Heroku」ボタンをクリックするだけです。クリックするとHerokuのウェブサイトに遷移し、OpenTokのAPIキーとAPIシークレットの入力を求められます。これらの値は、プロジェクトページで取得できます。 Video APIアカウント. HerokuのAccountをお持ちでない場合は、登録する必要があります(無料です)。
コードを詳しく見てみたいですか? 上のボタンをクリックすると、 learning-opentok-php GitHubのリポジトリ。リポジトリにアクセスして、コードや追加のドキュメントを確認してください。また、リポジトリをフォークして、デプロイ前に変更を加えることも可能です。
プロジェクトの設定
このチュートリアルを進めるには:
-
OpenTokをクローンする iOSのサンプルアプリ GitHub上のリポジトリ:
コピーgit clone https://github.com/opentok/opentok-ios-sdk-samples.git -
ターミナルで、
cdプロジェクトの「Archiving」サブディレクトリに配置し、その後、以下を実行します。pod install. -
Archiving ディレクトリ内にある新しい Archiving.xcworkspace ファイルをダブルクリックして、Xcode でプロジェクトを開きます。
-
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アプリケーションの構築と機能強化を続けてください: