Video Cloud App SDK for iOS の基礎

Product
Video Cloud
対象となる役割
開発者
バージョン
Brightcove 5
エディション
Express 499, Pro, Enterprise

このドキュメントは、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 以上が必要です。

OnePlanet アプリケーションのサンプル

弊社は、Video Cloud App SDK for iOS の バージョン 2.1 を使用して、サンプルのネイティブ iPhone および iPad アプリ、OnePlanet を開発しました。OnePlanet の開発方法についてはこちらを参照してください。また、アプリの iPhone バージョンと iPad バージョンのソース コードをダウンロードしてください。

OnePlanet デモ動画

 

また iTunes App Store でこの無料の iPhone または iPad 用アプリケーションを入手できます。

Xcode で Video Cloud App SDK for iOS をインストールする

Video Cloud App SDK for iOS をインストールするには、以下の手順を行います。

  1. Xcode を開き、Xcode プロジェクトを新たに作成するか、または既存のプロジェクトを開きます
  2. プロジェクトのターゲットを選択して Get Info を選択します(Xcode ペイン内のターゲットをクリックし、「Command-I」を押すか File > Get Info を選択)。
  3. [Build] タブを選択します。
  4. Settings リストの Linking セクションで、Other Linking Flags プロパティをダブルクリックして、以下のフラグを追加します。
      -all_load -ObjC
    
  5. [General] タブを選択し、Linked Library セクションで「+」ボタンをクリックします。
    ダイアログが下にスライドします。[Add Other...] ボタンをクリックします。
  6. lib フォルダにある Video Cloud Media API zip で配布されている libBrightcoveMediaAPI.a ファイルを選択します。
  7. lib フォルダにある Video Cloud iPhone Kit zip で配布されている libBCiPhoneKit.a ファイルについて、手順 5 と 6 を繰り返します。
  8. ターゲット設定を閉じます。
  9. プロジェクト設定を開きます(Project > Edit Project Settings)。
  10. Search Paths セクションの Header Search Paths のエントリで、Video Cloud Media API zip を保存するディレクトリを入力し、その後ろに /lib を追加します。たとえば、お使いのコンピュータの /Developer/Brightcovebc-media-api-1.2.1 を保存する場合、/Developer/Brightcove/bc-media-api-1.2.1/lib と入力します。重要: recursive チェックボックスが選択されていることを確認してください。
  11. Search Paths セクションの Header Search Paths のエントリに Video Cloud iPhone キットを保存するディレクトリを入力し、その後ろに /lib を追加します。たとえば、お使いのコンピュータの /Developer/Brightcovebc-ipad-iphone-kit-1.1.0 を保存する場合、/Developer/Brightcove/bc-ipad-iphone-kit-1.1.0/lib と入力します。重要: recursive チェックボックスが選択されていることを確認してください。
  12. プロジェクト設定を閉じます。
  13. プロジェクトに必要な Apple フレームワークを追加します。Xcode のプロジェクトの Frameworks セクションにこれらのフレームワークすべてが存在していることを確認してください。
  • Foundation.framework
  • CoreGraphics.framework
  • UIKit.framework
  • MediaPlayer.framework
  • OpenGLES.framework
  • QuartzCore.framework.

いずれかのフレームワークがない場合、Xcode のフレームワーク グループを右クリックして Add を選択し、次に Existing Frameworks... を選択してファイル検索を開きます。ここでプロジェクト用にフレームワークを選択し追加します。注: Video Cloud Media API のみを使用して Video Cloud iPhone 動画プレーヤを使用しない場合は、MediaPlayer.framework、OpenGLES.framework、および QuartzCore.framework を含める必要はありません。

  1. Video Cloud iPhone 動画プレーヤを使用している場合、Video Cloud 画像バンドルを追加する必要があります。
  • お使いのコンピュータ上で Video Cloud iPhone キットを保存したディレクトリを探します。そのディレクトリには BCMoviePlayer.bundle ファイルが含まれています。
  • このファイルを Xcode プロジェクトにドラッグするか、Xcode 内のプロジェクト ツリーを右クリックして Add > Existing Files... を選び、追加するバンドルを選択します。

    これらの画像はバンドル内で置き換えることによってスタイルを変更できます。この場合、新しい画像の名前を同じにする必要があります。

Media API の使用

BCMediaAPI クラスは Video Cloud Media API 呼び出しすべてに対するファサードです。したがってデベロッパは、必要な呼び出しすべてに対しインスタンスを 1 回だけ作成します。

 BCMediaAPI *bc = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];

呼び出しは Cocoa スタイルのエラー ポインタを使って処理されるため、すべての呼び出しは以下のようなパターンになります。

  1. エラー情報が必要な場合は NSError オブジェクトを作成します(オプション)。
  2. BCVideoBCPlaylist、または BCItemCollection を返す BC Media API を呼び出します。
  3. 返された BCObject が NIL かどうかをチェックし、NIL の場合は NSError を調べます(使用した場合)。
  4. 返された BCObject が NIL でない場合、アプリケーションの要求に従ってそのプロパティにアクセスします。

Media API のコード例

// この行を必ずソースに含めること(コメント解除):
// #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 プロトコルを実行する BCPlayerDelegateBCPlayer に登録します。

 bcPlayer.delegate = self;

デリゲート コールバックは、以下を含むイベントへのアクセスを可能にします。

  • メイン コンテンツ動画が完了
  • 関連動画がユーザーによって選択された

BCPlayer コード例

// この行を必ずソースに含めること(コメント解除): 
// #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 に関する最新情報や発表の配信に登録することもできます。

タグ
アプリ, iOS, iPad, iPhone, iTunes