YouTube Live Streaming API を使用すると、YouTube でライブイベントを作成、更新、管理できます。また、イベント(ブロードキャスト)のスケジュール設定や、実際のブロードキャスト コンテンツを表す動画ストリームとイベントとの関連付けも実行できます。
Live Stream API は、実際には YouTube Data API と YouTube Content ID API のコンポーネントで構成されています。Data API を使用すると、YouTube ユーザーは YouTube アカウントを管理できます。一方、YouTube Content ID API を使用すると、YouTube の著作権管理システムを操作できます。ただし、Live Streaming API を構成するすべてのリソースは、ライブイベントの作成と管理にのみ使用されます。
このドキュメントは、YouTube でのライブ配信を容易にするアプリケーションを作成するデベロッパーを対象としています。このドキュメントでは、YouTube および API 自体の基本的な概念について説明します。また、API がサポートするさまざまな機能の概要についても説明します。
基本コンセプト
- ブロードキャスト
- ブロードキャストは、YouTube でリアルタイムに視聴できるイベントを表します。イベント終了後にユーザーが視聴できるよう、ブロードキャストを YouTube 動画として録画および保存することもできます。
- 受信できます
- ストリームは、YouTube に送信される音声動画コンテンツを識別します。各ブロードキャストは 1 つの動画ストリームに関連付けられます。
- cuepoints
- cuepointは、ライブ配信に挿入できるミッドロール挿入点を表します。
API のユースケース
アプリケーションでの API の使い方として、次のような例が挙げられます。
-
ブロードキャストのスケジュールを設定し、ブロードキャスト設定を定義する。ユーザーがアプリケーションを使用していくつかのブロードキャスト設定を事前に定義し、定義済みの設定を選んで特定のブロードキャストに適用できるようにすることができます。
-
動画ストリームとブロードキャストを関連付ける。
-
ブロードキャスターがブロードキャストとその動画に関する情報を(YouTube Data API を使用して)同時に定義できるようにします。
-
ブロードキャスト状態(
testingやliveなど)間の移行を簡素化し、ユーザーがキューポイントを挿入できるようにします。
始める前に
-
Google Cloud console にアクセスし、API キーをリクエストして、アプリケーションを登録するには、Google アカウントが必要です。
-
API リクエストを送信できるようにするため、Google にアプリケーションを登録します。
-
アプリケーションを登録したら、アプリケーションが使用するサービスの 1 つとして YouTube Data API を選択します。
- Cloud console に移動し、登録したプロジェクトを選択します。
- [有効な API] ページに移動します。 API のリストで、YouTube Data API v3 のステータスが [オン] になっていることを確認します。YouTube コンテンツ パートナーの場合は、YouTube Content ID API のステータスも確認します。
-
JavaScript Object Notation(JSON)データ形式の基本コンセプトを理解します。JSON は言語に依存しない一般的なデータ形式で、任意のデータ構造をシンプルなテキストで表現します。詳しくは json.org をご覧ください。
API リクエストの承認
前述のとおり、Live Streaming API は、技術的には YouTube Data API または YouTube Content ID API の一部である機能を使用します。Content ID API を使用して、アセットのメタデータ、所有権情報、ポリシー情報を YouTube に提供できます。(アセットとは、ライブ動画ブロードキャストなどです)。また、自分の動画の申し立てや広告ポリシーの設定も行うことができます。
このセクションでは、他の Live Streaming API リクエストの認可要件とは異なる、Content ID API へのリクエストの認可要件について説明します。
- Data API に発信中
- API リクエストは、ブロードキャストする YouTube チャンネルを所有する Google アカウントによって承認される必要があります。
- Content ID API を呼び出す
- API リクエストは、放送する YouTube チャンネルを所有するコンテンツ所有者にリンクされている Google アカウントによって承認される必要があります。
リソースとリソースの種類
リソースとは、固有識別子を持つ個別のデータ エンティティです。次の表に、Live Streaming API を使用して操作するさまざまなタイプのリソースを示します。技術的には、これらのリソースはすべて YouTube Data API または YouTube Content ID API の一部として定義されています。ただし、liveBroadcast、liveStream、cuepoint リソースは、ライブイベントの作成と管理にのみ使用されます。
| リソース | |
|---|---|
liveBroadcast |
YouTube でブロードキャストしているイベントに関する情報が含まれます。liveBroadcast リソースは YouTube 動画リソースの拡張であり、ライブ配信に関連する動画メタデータを設定しますが、他の YouTube 動画には関連しません。したがって、 liveBroadcast リソースは 1 つの YouTube 動画リソースにのみ対応します。実際、liveBroadcast リソースと video リソースは同じ ID を共有します。また、Live Streaming API を使用してブロードキャストを作成した後、YouTube Data API を使用して動画に関する追加のメタデータを提供することもできます。 |
liveStream |
YouTube に送信する動画ストリームに関する情報が含まれます。ストリームは、YouTube ユーザーにブロードキャストされるコンテンツを提供します。作成された liveStream リソースは、1 つの liveBroadcast リソースにのみバインドできます。同様に、liveBroadcast リソースは 1 つの liveStream リソースにのみバインドできます。 |
cuepoint |
放送動画ストリームにキューポイントを挿入します。これにより、ミッドロール挿入点がトリガーされる可能性があります。liveBroadcasts.cuepoint メソッドを使用して、ブロードキャスト中にキューポイントを挿入します。 |
video |
単一の YouTube 動画を表します。前述のように、liveBroadcast リソースは video リソースの拡張です。YouTube Data API を使用して、収録場所やブロードキャストを視聴可能な地域など、動画に関するメタデータを更新できます。 |
videoAdvertisingOptions |
動画(またはブロードキャスト)の広告設定を定義します。YouTube Content ID API を使用して広告オプションを設定します。 |
asset |
映画やテレビ エピソードなどの知的財産を表します。この場合、ブロードキャスト動画がアセットです。YouTube Content ID API を使用して asset リソースを作成、管理します。 |
claim |
一致するアセットに動画をリンクします。YouTube Content ID API を使用して申し立てを作成し、放送動画の所有者として自分を識別します。 |
policy |
YouTube でコンテンツを視聴できる環境、または YouTube で表示をブロックする環境を指定するルールを定義します。ブロードキャスト動画にはポリシーを適用する必要があります。また、自分のブロードキャスト動画と一致するユーザー動画に YouTube が適用するポリシーを指定することもできます。 |
サポートされているオペレーション
次の表は、この API がサポートするメソッドを示したものです。
| 運用 | |
|---|---|
list |
0 個以上のリソースのリストを取得(GET)します。 |
insert |
新しいリソースを作成(POST)します。 |
update |
リクエストのデータに応じて既存のリソースを変更(PUT)します。 |
bind |
liveBroadcast リソースを liveStream リソースにリンクするか、そのようなリンクを削除します。 |
transition |
liveBroadcast リソースのステータスを変更し、新しいステータスに関連付けられたプロセスを開始します。たとえば、ブロードキャストのステータスを testing に移行すると、YouTube はそのブロードキャストのモニター ストリームへの動画の送信を開始します。 |
delete |
特定のリソースを削除(DELETE)します。 |
次の表に、さまざまなタイプのリソースでサポートされているオペレーションを示します。リソースの挿入、更新、または削除を実行する操作の場合は、常にユーザーによる承認が必要になります。場合によっては、list メソッドが承認済みリクエストと未承認リクエストの両方をサポートします。未承認リクエストは公開データのみを取得しますが、承認済みリクエストは認証済みユーザーに制限された情報も取得できます。
| サポートされているオペレーション | |||||||
|---|---|---|---|---|---|---|---|
| list | insert | update | bind | transition | cuepoint | delete | |
| liveBroadcast | |||||||
| liveStream | |||||||
リソースのパーツ
この API ではリソースのパーツの取得が可能で、実際にこれを要求することにより、アプリケーションが不要なデータの転送、解析、保存を実行しないようにしています。このアプローチにより、API はネットワーク、CPU}、メモリの各リソースをより効率的に使用できます。
part パラメータは、YouTube Data API リソースを取得または返す API リクエストに必要なパラメータです。API レスポンスに含める最上位レベル(ネストされていない)のリソース プロパティを 1 つ以上指定します。たとえば、liveStream リソースには次の部分があります。
snippetcdnstatus
これらのパーツはすべて、ネストされたプロパティを含むオブジェクトであり、API サーバーが取得する(または取得しない)メタデータ フィールドのグループと考えることができます。そのため、part パラメータでは、アプリケーションが実際に使用するリソース コンポーネントを選択する必要があります。この要件には、次の 2 つの重要な目的があります。
- アプリケーションが使用しないメタデータ フィールドの取得に API サーバーが時間を費やすのを防ぐことで、反応時間を短縮できます。
- アプリケーションが取得する不要なデータの量を低減(または排除)することで、帯域幅使用量を節減できます。
今後リソースのパーツが追加された場合でも、アプリケーションがサポートしていない新たに導入されたプロパティをリクエストすることはないため、上記の利点が損なわれることはありません。
おすすめの方法やお役立ち情報
コンテンツの申し立て
ブロードキャスト中に広告を表示する場合、イベントの開始前にブロードキャスト動画に対して申し立てを行う必要があります。コンテンツの申し立てを行うには、Content ID プログラムに参加している YouTube コンテンツ パートナーである必要があります。
ライブ ブロードキャスト動画と通常の動画では、申し立てのプロセスが少し異なります。ライブ動画の申し立てでは、動画を作成する前に申し立てを行う必要があります。API はこれをサポートしており、ブロードキャストのライフサイクルのドキュメントでは、申し立てを作成できる YouTube Content ID API 呼び出しについて説明しています。
コンテンツをプレビューしてテストする
YouTube は、受信したインバウンド動画ストリームを 2 つの異なるアウトバウンド ストリームでブロードキャストできます。
-
監視ストリームでは動画ブロードキャストをプレビュー(およびテスト)できます。このストリームは所有者のみがアクセスできる非公開ストリームです。ブロードキャストを
testingフェーズに移行できるのは、ブロードキャストのモニターストリームが有効になっている場合のみです。監視ストリームでは広告休憩は表示されません。 -
ブロードキャスト ストリームはユーザーが視聴可能なストリームです。ブロードキャストのプライバシー ステータスは、
public、private、unlistedのいずれかに設定できます。(非公開ブロードキャストは明示的に招待されたユーザーのみが視聴できるのに対して、限定公開ブロードキャストは視聴用のリンクを知っているユーザーであれば誰でも視聴できます)。ブロードキャスト ストリームは、監視ストリームと同時に実行されないように遅延させることができます。ブロードキャスト ストリームを遅延させると、ブロードキャストにキューポイントを挿入してよりきめ細かくコントロールできます。
ただしブロードキャスト ストリームを遅延させると、ライブのプレゼンターが視聴中のユーザーとやり取りすることが難しくなります。また、視聴者がそのブロードキャスト以外のソースからイベントに関する重要な情報を見つける可能性が高くなります。たとえば、60 秒の遅延でスポーツ イベントをブロードキャストすると、視聴者はそのブロードキャストで決定的瞬間を目撃する前に、他のリアルタイム ニュース ソースからその情報を知ってしまう可能性があります。
監視ストリームは、ブロードキャストするコンテンツをテストする目的で有効にすることをお勧めします。また、ユーザーとのやり取りやイベントのリアルタイム ブロードキャストを重視するか、それよりもキューポイントのタイミングを細かくコントロールすることを優先させるかどうかも選択する必要があります。
ブロードキャスト ストリーム中にミッドロール広告を配信する
ブロードキャスト中にcuepointを挿入して、ブロードキャストでミッドロール挿入点をできるだけ早く、または指定した時間に開始するように指定できます。ミッドロール挿入点を使用すると、YouTube はブロードキャスト中にミッドロール広告を配信できます。
ミッドロール挿入点には次の特徴があります。
-
cuepointリソースのdurationSecsプロパティを使用して設定する、事前定義された期間があります。ミッドロール挿入点が終了すると、視聴者はライブ配信に戻ります。 -
ミッドロール挿入点が発生すると、キューポイントが挿入されたときにブロードキャストを視聴している視聴者の動画プレーヤーでのみ広告が再生されます。視聴者がライブ配信が再生されているページを更新した場合や、キューポイントの挿入後に視聴者がライブ配信の視聴を開始した場合、広告は再生されません。
以下のステップは、ブロードキャスト中に広告休憩を挿入するためのベスト プラクティスです。
時間オフセットを設定する
キューポイントを挿入する際に、すぐに挿入するか、ブロードキャストの特定のポイントに挿入するかを指定できます。オプションは、動画のブロードキャスト ストリームが遅延しているかどうかによって異なります。
-
ブロードキャスト ストリームが遅延していない場合は、キューポイントをすぐに挿入するか、
walltimeMsプロパティを使用して特定の時間にミッドロール挿入点を開始できます。-
ミッドロール挿入点をすぐに開始するには、
liveBroadcasts.cuepointメソッドを呼び出します。リクエスト本文のリソースで、insertionOffsetTimeMsプロパティの値を0に設定するか、そのプロパティの値を指定せず、walltimeMsプロパティの値を指定しないでください。重要: 視聴者には、広告のコンテンツがすぐに表示されるわけではありません。広告コンテンツがユーザーに表示されるまでに 30 秒ほどかかることがあります。この遅延の間、視聴者にはブロードキャスト ストリームが表示されます。広告コンテンツが実際に表示されるタイミングを判断するには、モニター ストリームではなくブロードキャスト ストリームを視聴する必要があります。
-
特定の時間にミッドロール挿入点を開始するには、
liveBroadcasts.cuepointメソッドを呼び出し、walltimeMsプロパティを使用して目的の時間を指定します。プロパティ値は、エポック タイムスタンプを表す整数です。
-
-
ブロードキャスト ストリームが遅延している場合は、上記のようにキューポイントをすぐに挿入するか、上記のように時刻を指定するか、時間オフセットを指定してミッドロール挿入点の開始時間を決定できます。時間オフセットは、視聴者に広告を表示するブロードキャストのポイントを指定します。
オフセット値は、ブロードキャストのモニター ストリームの開始時点からのミリ秒単位で測定されます。ブロードキャストにテスト段階がある場合、ブロードキャストが
testingステータスに移行すると、モニターストリームが開始されます。それ以外の場合、モニター ストリームは、ブロードキャストがliveステータスに移行したときに開始されます。キューポイントを挿入するときは、
cuepointリソースのinsertionOffsetTimeMsプロパティを目的のオフセットに設定します。
時間オフセット値を計算する
オフセット値を取得するには、モニター ストリームを再生しているプレーヤーに対して YouTube Player API の getCurrentTime 関数を呼び出します。取得した値を使用して、その時点のブロードキャスト ストリームにキューポイントを挿入します。
オフセット値の範囲は、次のように計算できます。
[(elapsed_time - broadcast_delay + Δ), (elapsed_time - Δ)]
Δ は、YouTube がキューポイントを正確に挿入できない場合に、可能な時間オフセットの開始時と終了時に 5 秒間のバッファを設けるものです。次に例を示します。
- ブロードキャストに 5 分間のテスト フェーズがある。
- ブロードキャスト ストリームは監視ストリームよりも 60 秒遅延している。
- ブロードキャスターは、ブロードキャストが
liveステータスに移行してから 4 分後にキューポイントを挿入しています。(つまり、ブロードキャスト ストリームの表示開始から 3 分後に該当する)。
この場合、オフセット時間の範囲は [(485,000), (535,000)] です。
時間はミリ秒単位で指定します。この計算に使用された値は次のとおりです。
elapsed_time=540000-liveBroadcasts.cuepointメソッドが呼び出されたときに、モニター ストリームが 9 分間(540 秒、540, 000 ミリ秒)実行されています。broadcast_delay=60000– ブロードキャスト ストリームが 60 秒(60, 000 ミリ秒)遅延します。Δ=5000- キューポイントを確実に挿入できない場合の 5 秒間のバッファ。
トラブルシューティングとエラー処理
次のガイドラインは、特定の問題が発生した場合の解決方法を示したものです。各 API メソッドが返す可能性のあるエラーの一覧については、YouTube Live Streaming API - エラーをご覧ください。
-
ブロードキャストのステータスが別のステータスに移行する場合は、その移行に関連するアクションを YouTube が完了するまで、一時的に他のステータスが割り当てられることがあります。たとえば、ブロードキャストのステータスを
readyからtestingに変更するliveBroadcasts.transitionリクエストを送信すると、YouTube はブロードキャストのステータスをtestStartingに設定し、ステータスの変更に関連するアクションを完了します。これらのアクションがすべて完了すると、YouTube はブロードキャストのステータスをtestingに更新し、移行が完了したことを示します。ブロードキャストが
testStartingまたはliveStartingステータスで停止した場合は、liveBroadcasts.deleteメソッドを呼び出してブロードキャストを削除する必要があります。次に、新しいブロードキャストを作成してライブ配信にバインドし、テストプロセスを続行します。liveBroadcasts.transitionメソッドのドキュメントに記載されているように、このメソッドを呼び出す前に、ブロードキャストにバインドされているストリームのstatus.streamStatusプロパティの値がactiveであることを確認する必要があります。