ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
SharePlayで広告とインタースティシャルを表示する
Appで、SharePlay参加者に対して異なるタイミングで広告が配信される場合、連携再生をどのように提供できるかを紹介します。挿入広告やスケジュール設定されたHLSインタースティシャルで再生体験を構築する方法をはじめ、ヒントやベストプラクティスを紹介します。
リソース
関連ビデオ
WWDC22
-
ダウンロード
♪ ♪ どうも Prashantです AVFoundationのエンジニアです WWDC2022へようこそ SharePlayの導入により SharePlayグループと完全に同期しながら リアルタイムでコンテンツを ナビゲートし いつでもつながれる視聴体験を 提供することができます しかし コンテンツの タイムラインにターゲット広告や その他のインタースティシャルが 表示される場合 異なる長さの広告を 受信する参加者間や 広告を受信する参加者と 受信しない参加者が 混在すると 連携再生が 困難となる場合があります SharePlayで広告やインタースティシャルを 連携再生するための スケジューリングに興味があれば このセッションはうってつけです 本ビデオでは まず連携再生が どのように行われるかを説明します 次に 連携再生における 広告や他のインタースティシャルに 関連する課題 について説明します 続いて 広告を見るときに 可能なさまざまな 視聴体験について 説明します そして これらの広告をどのように 実現するかを見ていきます また HLS インタースティシャルと 連携した再生も確認します そして最後に SharePlayで 魅力的な体験を提供するための ベストプラクティスを いくつか紹介します
SharePlayでの連携再生の 仕組みを見てみましょう FaceTimeの通話中に 1人の参加者のデバイスから 発信された再生制御コマンドを グループ間で共有することで 再生を同期させることが できます 参加者全員が 同じコンテンツを 見ている場合は うまくいきますが 一部の参加者に広告があった 場合はどうなるでしょうか? アリスとボブが ある番組コンテンツを 見ようとしている場合を 見てみましょう これは終わりまでを示す タイムラインです 彼らが見ているのが 番組コンテンツだけなら 連携再生はかなり簡単に 実現できるはずです groupSessionとplaybackCoordinator を関連付けるだけで 問題なく使用できます では それぞれに番組のおさらいと その後にスタジオまたは ネットワークバナーが 入り込んでいるとしましょう これは典型的な例で アリスとボブでおさらいのセグメントと バナーが一致しているので 連携再生はまだ 達成可能です でも今度は アリスの地理的な事情で 番組開始の前に法定警告を 表示する必要があり さらに番組内のさまざまな場所で 広告が表示される可能性があるとします これらの広告が異なる長さで あることも考えられます このため 同期させるのに 苦労するかもしれません ボブには最初からネットワークバナーが 表示されるかもしれませんが アリスは警告が表示された後に 表示されるかもしれません また タイムラインで それぞれの時間を見ると 彼らはコンテンツの全く異なる 部分を見ていることになります ここで このような シナリオでどのような ユーザー体験が 得られるかを考えてみましょう そのために よりシンプルなタイムラインで それぞれに1つの広告を 入り込んだ場合を考えてみましょう 理想的なのは 1人で番組を見ているときと あまり変わらない 体験をしてもらうことです それには 広告の長さを 一致させる必要があります これは 私たちも 望むことです これで広告を見た後 両方が 同期して再生を再開します しかし 時には異なる長さの 広告が表示されたり 片方では広告が全く 表示されないこともあります もし2人が再生を同期させるとしたら 2つの体験から選ぶことができます
アリスは自分の 広告が終了したら ボブの広告が終了するのを待って 同期して再開ができます
あるいは 彼女は メインプログラムを続け ボブは先にジャンプし アリスに 追いつき 同期を保つことができます この場合 ボブは アリスに追いつく際に 番組の内容を一部 見逃すことになります さて これらの体験を どのように可能にするのでしょうか これらの待機ポリシーは AVPlaybackCoordinator配列の中で どのように入力するか によって指定ができます デフォルトの動作は 参加者の一部が広告を視聴している間 グループに待機させません 広告を見終わった後 他の参加者に追いつくために いくつかのコンテンツを 見逃すことになるのです 参加者が広告を見ている間 グループを待機させたい場合は suspensionReasonsThatTriggerWaiting 配列の一部として 「playingInterstitial」停止理由を 含めるだけでよいでしょう このポリシーでは 参加者が 他の参加者の広告を待っている際 そのプレイヤーのtimeControlStatusが waitingToPlayAtSpecifiedRateとなり waitingReasonが waitingForCoordinatedPlayback となります では 先ほど説明した 番組コンテンツに戻り 連携再生タイムラインから 外れる時間範囲を どのように 定義するでしょうか? 例えば 法定警報は アリスだけに表示され ボブには表示されません また 広告の長さが 異なる可能性もあります HLSでは 広告のスケジューリングに 2つ方法があることはご存知かと思います その1つが 広告セグメントを プライマリコンテンツの プレイリストに 直接挿入することです そのため 不連続タグを 使用して広告を 挿入したビデオのオンデマンド コンテンツでは AVFoundation APIを使用して AVPlayerPlaybackCoordinatorで 広告時間の範囲を 設定することができます そこで コンテンツ内の 広告やインタースティシャルを 表す正確な時間範囲を 配列で指定できる デリゲートメソッド を追加しました そしてAVPlayerPlaybackCoordinator がこの情報を使って グループ全体の 再生を調整します 参加者がこの時間帯に入ると 指定された 待機ポリシーに従って 再生が調整されます またインタースティシャルの 種類によっては この時間帯に1人がナビゲートできるよう にすることも可能です そのためSharePlay中に これらの時間帯にナビゲートしたい場合 グループ全体がその時間帯の 先頭にスナップすることになります
これはプレイリストの例で 広告の時間範囲は プレイリストのEXTINFタグ で報告された時間の 合計によって 生成されます これはEXTINFタグの一部として 報告される長さがそのセグメントの メディアの長さを正確に 反映していることを前提としています さて 連携再生が 機能するためには アセットはどのような ものであるべきでしょうか この例では アリスとボブには それぞれ異なる長さの広告が挿入され 結果として異なる アセットの長さに なっているわけです このアセットをSharePlay に 対応させるためには アセットに含まれる実際の コンテンツの長さが一致する必要があります これはビデオのオンデマンド コンテンツにのみ適用され 広告が挿入された ライブコンテンツでは すべての参加者の広告の 長さが一致することが望まれます もし 正確な時間範囲を 取得するのが難しい場合や ライブコンテンツにターゲット広告を 動的にスケジュールしたい場合は HLSインタースティシャルを使い 広告をスケジュールできます 2021年にHLS インタースティシャルを導入し これまでとは異なる柔軟な広告 スケジューリングが可能になりました 詳しくはWWDC2021の 「HLSにおけるダイナミックなプレロールと ミッドロール」をご覧ください つまり広告とインタースティシャルは コンテンツのタイムラインの外にある 別のオブジェクト として扱われるのです これらのオブジェクトは マルチバリアントプレイリストから 直接参照することができ プライマリコンテンツの メディアプレイリストの 日付範囲タグの一部として マルチバリアントプレイリストURIを含める だけでサーバーサイド広告挿入が可能です クライアントサイドで AVFoundation APIを使うこともできます HLS インタースティシャルを使用して 広告をスケジュールする場合 AVFoundationは調整された再生を 自動的に処理します 必要なのは 待機時間の 設定だけです
HLS インタースティシャルを使用して 広告をスケジュールする場合 SharePlayと互換性が あると見なされるには すべての参加者間で プライマリコンテンツの 長さが 一致することが必要です それでは 良いサービスを 提供するための ベストプラクティスを 紹介しましょう SharePlayは まるでコンテンツを 自分で見ているように シームレスにつながった 視聴体験を 提供することを 目的としています そのため 待ち時間やコンテンツの スキップができるだけ 少なくなるような 工夫が必要です そのため 広告の待ち時間や スキップ時間を短くするような 工夫をすることを お勧めします 広告が表示される参加者と 表示されない参加者の混合グループで 全員がライブコンテンツを 視聴している場合 HLSインタースティシャルを使用して デフォルトの待機ポリシーを使用しながら 広告をスケジューリング することができます ここで広告のスケジューリング中に レジュームのオフセットを指定しない場合 コンテンツは広告期間と 等しいオフセットで再開されます その場合 広告のない参加者は プライマリーコンテンツを 見続け 他の参加者は 広告を見終わったら その参加者に 合流することになります
ここでは アリス・ボブ・チャーリーの 3人がライブ映像を見ています アリスはサービスのプレミアム会員 なので広告がありませんが ボブとチャリーはHLS インタースティシャルを使用して スケジュールされた異なる 時間の広告があります アリスが番組を見続けながら 広告の区切りで ボブとチャーリーがアリスと 同期している様子がわかります
もしこれがスポーツの ライブ中継だったら アリスがスタジアムで ライブ中継を見ている間に ボブとチャーリーが 広告を見ることになりますね そして 広告が終わると ちょうどプレイが始まる 時間帯になるのです ビデオオンデマンドストリームでは 参加者が番組コンテンツを 見逃すことができない場合 待機ポリシーを 使用することができます GroupSessionMessengerを使い 参加者間で広告の スケジュールを 共有できるようになりました 誰かが広告を 見終わるのを待っているとき すでにスケジュールを 共有しているため どれくらいの時間 待たされるかが明確になります 待ち時間の間に 別のプレーヤーで自社サービスの 最新情報など面白い コンテンツを表示させれば 飽きさせないことができます まとめです 広告やインタースティシャルを 連携再生するためには 待機ポリシーを指定し 挿入広告がある場合は AVFoundation APIを使って 再生コーディネータに 時間範囲を設定するか HLSインタースティシャル を使って AVFoundationに 広告の再生を 管理させればよいでしょう 参加者が同じ瞬間に同じコンテンツを 見ているとは限りません プレミアム会員には 広告は表示されず 広告の長さが異なる広告が 表示される参加者もいます そんなとき プレミアム会員は 待機画面と にらめっこする 必要はありません 先ほど見たような面白い コンテンツを見せることもできますし 他の体験を生み出して 楽しませることもできます SharePlayでカスタム体験を 構築する方法についてのアイデアは 「優れたSharePlay体験を 提供する」をご覧ください このセッションが有益なもので あることを願っています 残りのWWDCを お楽しみください ありがとうございます
-
-
5:13 - Specific sample accurate time ranges that represent ads or interstitials
class MyAVPlayerCoordinatorDelegate : NSObject, AVPlayerPlaybackCoordinatorDelegate { func playbackCoordinator(_ coordinator: AVPlayerPlaybackCoordinator, interstitialTimeRangesFor playerItem: AVPlayerItem) -> [NSValue] { return interstitialTimeRanges } }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。