動画ストリームと広告が互いに独立している必要があるクライアントサイドの動画実装と異なり、ダイナミック広告挿入(DAI)と併せて使用されるサーバーサイド実装は 1 つのストリームのみをリクエストし、広告は動画コンテンツ内に動的に挿入されます。サーバーエラーが発生するとストリームがブロックされることがあるため、ユーザー エクスペリエンスが低下するだけでなく、収益の損失にもつながります。
アド マネージャー DAI では、ストリームを作成するときだけでなく、ストリームを実行中にも HTTP エラーを表示するので、サーバーから有効なレスポンスを得られないイベントの代替ストリームを特定できます。
ストリーム作成時に検出した HTTP エラーの処理
エラーの種類 | 推奨事項 |
---|---|
4XX エラー (429 を除く) |
HTTP 4XX エラーが表示された場合、クライアントでエラーが発生している可能性が高いので、未加工のストリームは使用しないでください。サーバーに送信しているリクエストに間違いがなく、必要なパラメータをすべて含めていることを確認します。 |
429 または 5XX エラー | HTTP 429 エラーまたは HTTP 5XX エラーが表示された場合、収益化を行わない未加工の代替ストリームを使用してください。IMA SDK では、エラーハンドラがこの種のエラーを検出でき、デフォルトのストリームを代替ストリームに切り替えることができます。 |
TVOS
static NSString *const kBackupContentPath =
@"http://googleimadev‑vh.akamaihd.net/i/big_buck_bunny/bbb‑,480p,720p,1080p,.mov.csmil/"
@"master.m3u8";
- (void)streamManager:(IMAStreamManager *)streamManager
didReceiveError:(NSError *)error {
NSLog(@"Error: %@", error);
[self playBackupStream];
}
- (void)playBackupStream {
NSURL *contentURL = [NSURL URLWithString:kBackupContentPath];
self.playerViewController.player = [[AVPlayer alloc] initWithURL:contentURL];
[self.playerViewController.player play];
}
ビデオ オンデマンド(VOD)やライブ ストリームに代替ストリーム URL を取得する
アプリには VOD とライブリニア ストリームの両方に代替 URL を取得するためのメカニズムが必要です。VOD の場合、代替ストリームは MRSS フィードで指定される ingestURL にしてください。ライブリニアの場合は、代替ストリームはアド マネージャー管理画面で指定されるコンテンツ ストリームにしてください。
ストリーム実行中の HTTP エラーの処理
ストリーム実行中にエラーが発生した場合、未加工のストリームを使用しないでください。アド マネージャーでは発生するほとんどのエラーを自動的に修正します。ただし、サーバーがエラーを処理できない場合は、ストリームの再生が停止します。ストリームが停止すると、アプリが新しいストリームを開始します。引き続きエラーが発生した場合は、未加工のストリームを使用してください。
代替の実装を検証する
次のサンプル ストリームを使って代替の実装を検証できます。
ストリーム形式 | アセットキー |
---|---|
HLS | MSQJlB9VSgqJkGNv1mB0FA |
DASH | TrhaCde0R_uKzG_psucTww |
これらのストリームはテスト用であり、常に HTTP 429 エラーが発生します。
DAI リニア ストリームの自動フェイルオーバー
ごくまれに、Google のシステムで想定外の大量トラフィックが発生した場合、Google は一部のユーザーに広告なしの代替ストリームを配信することがあります。その場合、視聴者にはベース コンテンツが表示されます。
代替ストリームを配信できない場合(例: 認証または発信元の転送が指定されているか、ストリームにバリエーションの除外がリクエストされている場合)は、HTTP 429 レスポンス コードが配信されます。アプリケーションでは、ローカルの未加工ストリームを代わりに使用する必要があります。