このドキュメントは、iPhone、iPad などの Apple iOS プラットフォームに Video Cloud 動画を配信するためのネイティブ アプリケーションの独自開発に使用する、Video Cloud App SDK for iOS に関して説明しています。この「基礎」編のほかに、以下のドキュメントも確認してください。
Video Cloud App SDK for iOS は、Video Cloud Media API を採用し、iPhone、iPad、iPod Touch などの Apple iOS デバイス上でカスタム Video Cloud 動画プレーヤで動画を再生するための Cocoa/Objective-C ライブラリ群です。Media API は、Video Cloud の動画やプレイリスト API に対して Cocoa/Objective-C インタフェースを提供します。プレーヤのコンポーネントは、標準の iOS 動画プレーヤに対し、電子メールおよび Twitter の共有や、関連動画や人気のある動画のオーバーレイに関するサポートを追加します。
iTunes App Store の拡大および iPhone や iPad 機器の人気に伴い、モバイル メディアへの需要は成長し続けています。この SDK を使ってネイティブ iOS アプリケーションを作成することにより、他に類のないエクスペリエンスを作り出し視聴者に提供できます。動画コンテンツやメタデータのアクセスや取得を SDK を使って容易に行えるため、視聴者に合わせてアプリケーションを容易に調整し、ブランドを常に見せることにより視聴者の身近なものとすることができます。
iOS アプリケーションの構築を考える場合、モバイル配信用の動画コンテンツの準備は早過ぎることはありません。「モバイル配信用に動画をエンコードする」で詳細をご覧ください。またモバイル Web アプリケーションの構築をお考えの場合は、Brightcove でどのようにサポートされているかについて詳細をご覧ください。
Video Cloud App SDK for iOS には、Apple iOS SDK 3.1 以上が必要です。
弊社は、Video Cloud App SDK for iOS の バージョン 2.1 を使用して、サンプルのネイティブ iPhone および iPad アプリ、OnePlanet を開発しました。OnePlanet の開発方法についてはこちらを参照してください。また、アプリの iPhone バージョンと iPad バージョンのソース コードをダウンロードしてください。
また iTunes App Store でこの無料の iPhone または iPad 用アプリケーションを入手できます。
Video Cloud App SDK for iOS をインストールするには、以下の手順を行います。
-all_load -ObjC
いずれかのフレームワークがない場合、Xcode のフレームワーク グループを右クリックして Add を選択し、次に Existing Frameworks... を選択してファイル検索を開きます。ここでプロジェクト用にフレームワークを選択し追加します。注: Video Cloud Media API のみを使用して Video Cloud iPhone 動画プレーヤを使用しない場合は、MediaPlayer.framework、OpenGLES.framework、および QuartzCore.framework を含める必要はありません。
BCMediaAPI クラスは Video Cloud Media API 呼び出しすべてに対するファサードです。したがってデベロッパは、必要な呼び出しすべてに対しインスタンスを 1 回だけ作成します。
BCMediaAPI *bc = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
呼び出しは Cocoa スタイルのエラー ポインタを使って処理されるため、すべての呼び出しは以下のようなパターンになります。
// この行を必ずソースに含めること(コメント解除):
// #import "BCMediaAPI.h"
BCMediaAPI *bc = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
NSError *err;
BCVideo *video = [bc findVideoById:1234 error:&err];
if (!video) {
// 結果が NIL で、オプションのエラー引数を送信した場合、Video Cloud
// サーバーによって報告された根本的なエラーすべてが記録される。以下の簡便な方法を使用して、
// 根本的エラーが報告される NSError の userInfo を、ロギングなどの目的で NSString
// にダンプできる。
//
NSString *errStr = [bc getErrorsAsString:err];
NSLog(errStr);
}
BCPlayer クラスは、動画を再生および停止できる公開コンポーネントです。
BCPlayer *bcPlayer = [[BCPlayer alloc] init];
BCMedia API にある BCVideo クラスのインスタンスを使って動画を再生します。通常、この BCVideo インスタンスは Brightcove Media API を使って動的に取得されますが、プログラムによる作成も可能です。また、Brightcove Media API を使って BCVideo インスタンスを取得し、その後インスタンスのプロパティをプログラム的に設定することによって書き換えることもできます。
BCVideo *myVideo = [[self getVideoObject:videoId] retain]; [bcPlayer play:activeVideo];
共有を有効にしたい場合は BCPlayer インスタンス上で playerId も設定する必要があります。これにより電子メールや Twitter URL のリンクを正しく構成し、ユーザーを目的の Web ベースの Video Cloud プレーヤに導くことができます。
関連動画や人気のある動画をプレーヤでカバーフロー オーバーレイとして表示したい場合、これら BCVideo インスタンスの配列をプレーヤに追加します。
プレーヤで種々のイベントが起きた際に通知を受け取るための BCPlayerDelegate プロトコルを実行する BCPlayerDelegate を BCPlayer に登録します。
bcPlayer.delegate = self;
デリゲート コールバックは、以下を含むイベントへのアクセスを可能にします。
// この行を必ずソースに含めること(コメント解除):
// #import "BCPlayer.h"
- (void) playMyMovie {
NSString *apiKey = @"keyWithAdditionalURLPrivileges";
bcAPI = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
double videoId = 25348489001L;
bcPlayer = [[BCPlayer alloc] init];
bcPlayer.delegate = self;
bcPlayer.playerId = 25309144001L;
// これがない場合は共有が機能しない
// BCMediaAPI を使って BCVideo インスタンスを作成:
activeVideo = [[self getVideoObject:videoId] retain];
// 必要に応じて人気のある動画や関連動画を設定する。それには、プログラム的に
// BCVideo オブジェクトを作成するか、BCMediaAPI を通して自動で設定する:
bcPlayer.popularVideos = [self getPopularVideos];
bcPlayer.relatedVideos = [self getRelatedVideos:videoId];
// 注:関連動画あるいは人気のある動画を設定しなかった場合、動画の検索メニューは表示されない
// 注:関連動画あるいは人気のある動画のいずれかのみを設定した場合、動画検索は表示されるが、
// 人気のある動画と関連動画を切り替えるスイッチは表示されない。
// 以下の設定はデフォルトですべて true であるが、
// これらに優先してどのメニューを表示するかを指定できる:
//
bcPlayer.shareMenuEnabled = NO;
bcPlayer.moreVideosMenuEnabled = YES;
bcPlayer.showRelatedMoviesOnComplete = YES;
// デフォルトでは、関連動画と人気のある動画は、カバーフロー UI を使って提供されるが、このプロパティを
// NO に設定することによって、代わりに UITableView を使用できる。これは、
// 特定のアプリケーションにおいてカバーフローで性能の問題が見られる場合に行うことが考えられる
// (このプロパティのデフォルト値は YES)。
bcPlayer.useCoverflow = YES;
// 動画を再生
[bcPlayer play:activeVideo];
}
#pragma mark BCPlayerDelegate callback methods
- (void) playerComplete {
NSLog(@"Player Is Complete");
}
- (void) selectedRelatedVideo:(BCVideo *) relatedVideo {
// アプリケーションには、コントロールの再要求、共有のための playerId の変更などのオプションがある。
bcPlayer.playerId = 25309144001L; // 共有を機能させるために、新しい動画に対し
playerId の変更が必要な場合がある。
}
サポートが必要な場合あるいは質問がある場合は、フォーラムにアクセスしてください。また、Video Cloud App SDK for iOS については Twitter(http://twitter.com/bciphonesdk)でもフォローできます。電子メールによるモバイル SDK に関する最新情報や発表の配信に登録することもできます。