はじめに
このドキュメントでは、YouTube Live Streaming API と YouTube Content ID API を使用して作成および管理される YouTube のライブ配信のライフサイクルについて説明します。
リソースとリソースの種類
スタートガイドで説明したように、リソースは固有識別子を持つ個別のデータ エンティティです。YouTube でライブ イベントを作成して管理するには、YouTube Data API または YouTube Content ID API の一部として定義されているさまざまなタイプのリソースを使用します。YouTube Live Streaming API ヘッダーに記載されているリソースは、技術的には他の API で定義されていますが、ライブブロードキャストでのみ使用されるため、個別に記載されています。
YouTube Live Streaming API リソース
YouTube Data API リソース
YouTube Content ID API リソース
ライブ配信を作成、管理する
次の手順では、YouTube でライブ イベントを作成して管理する方法について説明します。各ステップは、次のステージに分類されます。
ステージ 1: ブロードキャストの準備
ステップ 1.1: ブロードキャストを作成する
liveBroadcasts.insert
メソッドを呼び出して、ブロードキャストを YouTube のライブイベントのスケジュールに追加します。挿入する liveBroadcast
リソースでは、次のプロパティの値を定義する必要があります。
ブロードキャストを準備する際は以下のガイドラインに準拠してください。
ブロードキャストのテスト段階を設けて、他の視聴者にブロードキャストを見られることなく動画ブロードキャストを視聴できるようにするには、
contentDetails.monitorStream.enableMonitorStream
プロパティをtrue
に、contentDetails.enableAutoStart
プロパティをfalse
に設定する必要があります。これらは両方のプロパティのデフォルト値です。録画したブロードキャストから参照を作成する場合は、ブロードキャストの
contentDetails.recordFromStart
プロパティをtrue
に設定する必要があります。録画した動画をブロードキャスト終了直後に再生できるようにするには、contentDetails.enableDvr
プロパティもtrue
に設定する必要があります。(どちらのプロパティもデフォルト値はtrue
です)。ブロードキャストのステータスが
created
またはready
の間は、contentDetails
プロパティを更新できます。ブロードキャストのステータスが
created
、ready
、またはtesting
である限り、ブロードキャストの予定開始時刻と予定終了時刻を更新できます。ブロードキャストのタイトル、説明、プライバシー ステータス、およびブロードキャストの
video
リソースの一部であるその他のメタデータ フィールドは、いつでも更新できます。
注: 特定の YouTube ユーザーのみが動画を視聴できるようにする場合は、ニーズに応じてstatus.privacyStatus
プロパティの値をunlisted
またはprivate
に設定します。
API レスポンスの処理
liveBroadcasts.insert
メソッドを呼び出すと、API レスポンスに作成した liveBroadcast
リソースが含まれます。コードで、そのリソースから id
を抽出して保存する必要があります。この値は、今後の API リクエストでブロードキャストを識別するために必要になります。(同じ ID を使用して、liveBroadcast
リソースに対応する video
リソースを特定することもできます)。
ステップ 1.2: ストリームを作成する
liveStream
リソースを使用すると、動画を YouTube に送信できます。また、送信するコンテンツの内容を記述することもできます。各ブロードキャストは 1 つのストリームに関連付ける必要があります。
liveStreams.insert
メソッドを呼び出して、イベントの動画ストリームを作成します。ストリームを作成する際は、以下のプロパティの値を設定する必要があります。
ライブ配信のタイトルを除き、これらの値はライブ配信の作成後に更新できません。変更する必要がある場合は、この手順を繰り返して別のストリームを作成する必要があります。このプロセスについては、このドキュメントの後半のステップ 3.5 で詳しく説明します。
次のプロパティの値を設定することもできます。
snippet.description
- ライブ配信のタイトルと同様に、ライブ配信の説明はライブ配信の作成後に更新できます。タイトルも説明も YouTube ユーザーには表示されません。contentDetails.isReusable
- ストリームが再利用可能かどうかを示します。再利用可能な場合、複数のブロードキャストにバインドできます。このプロパティの値は、チャネルがliveBroadcast
リソースとliveStream
リソースの間に多対一の関係があるか、一対一の関係があるかを効果的に決定します。- プロパティのデフォルト値である
true
を使用すると、チャンネルのすべてのブロードキャストに同じliveStream
リソースを使用できます。つまり、ブロードキャストごとにこのステップ(1.2)を繰り返す必要はありません。代わりに、後続のブロードキャストでストリーム ID を再利用できます。 - プロパティ値を
false
に設定した場合は、ブロードキャストごとに新しいストリームを作成する必要があります。
- プロパティのデフォルト値である
API リクエストを発行してストリームを作成すると、API レスポンスには作成した liveStream
リソースが含まれます。コードは、そのリソースから id
を抽出して保存する必要があります。この値は、今後の API リクエストでストリームを識別するために必要になります。
ステップ 1.3: ブロードキャストをストリームにバインドする
liveBroadcast
リソースと liveStream
リソースを作成したら、liveBroadcasts.bind
メソッドを使用して 2 つを関連付ける必要があります。このアクションにより、YouTube に送信する動画ビットが、その動画のイベント ブロードキャストに関連付けられます。
liveBroadcasts.bind
メソッドを呼び出す際に、id
パラメータをステップ 1.1 で取得したブロードキャスト ID に、streamId
パラメータをステップ 1.2 で取得したストリーム ID に設定します。
ステージ 2: コンテンツの申し立て
ブロードキャスト中に広告を表示するには、イベントが始まる前にブロードキャスト動画の所有権を主張する必要があります。このプロセスは次の手順で行います。このステージで説明する API 呼び出しはすべて、YouTube Content ID API で定義されています。
ステップ 2.1: アセットを作成する
asset
リソースは、知的財産を表します。この場合はブロードキャストがアセットになります。assets.insert
メソッドを呼び出してアセットを作成します。
API レスポンスには、作成した asset
リソースが含まれます。このリソースから id
を抽出して保存する必要があります。この値は、今後の API リクエストでアセットを識別するために必要になります。
ステップ 2.2: アセットの所有権を定義する
アセットの所有権データは、アセットの所有者と、そのアセットを所有している地域を特定します。YouTube はこのデータを使用して、申し立てが行われた動画のポリシーを所有者が設定できる地域を判断します。
たとえば、米国でイベントを放送する権利を持っていて、別の放送局がカナダで同じ権利を持っている場合、放送動画と、放送動画と一致するユーザーがアップロードした動画に対して、それぞれ異なるポリシーを定義できます。米国では、一致するユーザー アップロード動画にクリエイターのポリシーが適用され、カナダでは、一致する動画に他の所有者のポリシーが適用されます。
アセットの所有権の地域を定義するには、ownership.update
メソッドを呼び出します。このリクエストで、assetId
パラメータをステップ 2.1 で保存した id
に設定します。
ステップ 2.3: アセットの一致ポリシーを設定する
アセットの一致ポリシーは、ユーザーがアセットに関連付けられた参照と一致する動画をアップロードした場合に YouTube が行うべき処理を説明するものです。この場合、一致ポリシーは、ライブブロードキャストと一致するアップロードされた動画を YouTube がどのように処理すべきかを示します。
注: 放送動画から参照を作成し、その参照を使用して放送に一致するユーザーがアップロードした動画を特定する場合は、一致ポリシーを設定する必要があります。それ以外の場合は、この手順を省略できます。
一致ポリシーを設定するには、まず適用するポリシーを特定する必要があります。既存のポリシーのリストを取得するには、policies.list
メソッドを呼び出します。新しいポリシーを定義するには、policies.insert
メソッドを呼び出します。いずれの場合も、適用するポリシーの id
をキャプチャする必要があります。
ポリシーを特定したら、assetMatchPolicy.update
メソッドを呼び出します。このリクエストで、assetId
パラメータをステップ 2.1 で保存した id
に設定します。
ステップ 2.4: 動画の申し立てを行う
このステップでは、放送する動画をステップ 2.1 で作成したアセットにリンクする申し立てを作成します。申し立てでは、ブロードキャスト動画にのみ適用されるポリシーが設定されます。(ブロードキャスト動画に一致するユーザー アップロード動画は、前のステップで設定した一致ポリシーの対象となります)。
請求を作成するには、claims.insert
メソッドを呼び出します。挿入する claim
リソースで、次のプロパティの値を設定する必要があります。
assetId
- この値はステップ 2.1 で取得しました。videoId
- 手順 1.1 で取得したブロードキャスト ID です。policy
-policy
リソースです。既存のポリシーを適用するには、リソースのid
プロパティを既存のポリシーの ID に設定します。前のステップでは、既存のポリシーの ID を取得する方法について説明しました。contentType
- この値をaudiovisual
に設定します。
API レスポンスの処理
申し立てを挿入すると、API レスポンスには作成した claim
リソースが含まれます。コードは、そのリソースから id
を抽出して保存する必要があります。この値は、後で処理済み動画からリファレンスを作成するために使用します。
ステップ 2.5: ブロードキャストの広告設定を更新する
視聴者がブロードキャストの視聴を開始したときにプレロール広告を配信する場合や、ブロードキャストの休憩中に広告を配信する場合は、動画の広告オプションを設定する必要があります。
- ブロードキャストでプリロール広告を有効にすると、ブロードキャストの途中から視聴を開始した場合でも、すべての視聴者にブロードキャストの視聴を開始したときに広告が表示されます。
- ブロードキャストでミッドロール広告を有効にすると、ブロードキャスト中に広告キューポイントを挿入できるようになります。
広告を有効にするには、videoAdvertisingOptions.update
メソッドを呼び出します。リクエストで、videoId
パラメータをステップ 1.1 で取得したブロードキャスト id
に設定します。videoAdvertisingOption
リソースの adFormats[]
プロパティを使用して、有効にする広告フォーマット(preroll
、midroll
、postroll
)を指定します。
ステージ 3: テスト
この段階では、視聴エクスペリエンスをテストできるように、ブロードキャストのモニターストリームを表示するプレーヤーを埋め込みます。モニターストリームは、YouTube 視聴者に表示される放送動画をプレビューできるプライベート ストリームです。
動画ブロードキャストをテストできるのは、モニター ストリームが有効になっている場合に限られます。ブロードキャストの監視ストリームはデフォルトで有効ですが、ブロードキャストのモニター ストリームを無効にするには、ブロードキャストの作成時または更新時に contentDetails.monitorStream.enableMonitorStream プロパティを false
に設定します。
ステップ 3.1: 監視ストリーム プレーヤーを埋め込む
liveBroadcasts.list
メソッドを使用してブロードキャストを取得し、contentDetails.streamDetails.monitorStreamEmbedHtml
プロパティの値を抽出します。この値には、モニターストリームを表示する YouTube プレーヤーを埋め込むために必要な HTML が含まれています。
ステップ 3.2: 動画を開始する
動画ストリームへの動画の転送を開始します。
ステップ 3.3: 動画ストリームがアクティブであることを確認する
liveStreams.list
メソッドを呼び出して、ブロードキャストに関連付けられている liveStream
リソースを取得します。status.streamStatus
プロパティの値が active
であることを確認します。これは、YouTube サーバーがエンコーダからデータを正しく受信していることを示します。
ステップ 3.4: ブロードキャストのステータスをテストに移行する
liveBroadcasts.transition
メソッドを呼び出して、ブロードキャストのステータスを更新します。id
パラメータの値をステップ 1.1 で取得したブロードキャスト ID に設定し、broadcastStatus
パラメータの値を testing
に設定します。
liveBroadcasts.transition
メソッドを呼び出した後、そのトランジションが完了するまでに数秒、場合によっては 1 分ほどかかることがあります。この間、API をポーリングしてブロードキャストのステータスを確認する必要があります。移行が完了するまで、ブロードキャストのステータスは testStarting
になります。移行が完了すると、ステータスは testing
になります。
ステップ 3.5: テストを完了する
テストがスムーズに完了したら、ステージ 4 に進みます。ただし、場合によってはさらにテストを行う必要があります。たとえば、テストで動画ストリームが正しく設定されていないことが判明した場合は、ブロードキャストに進む前に修正する必要があります。
動画ストリームが正しく構成されていない場合は、既存のストリームのバインドを解除(削除)して、新しいストリームを作成する必要があります。たとえば、間違った動画形式を指定すると、ストリームが正しく構成されないことがあります。
-
動画ストリームのバインドを解除するには、ステップ 1.3 の
liveBroadcasts.bind
メソッドを呼び出します。API リクエストで、id
パラメータをステップ 1.1 で取得したid
に設定します。リクエストにstreamId
パラメータを含めないでください。 -
動画ストリームを削除するには、
liveStreams.delete
メソッドを呼び出します。リクエストで、id
パラメータをステップ 1.2 で取得したid
に設定します。 -
手順 1.2 を繰り返して、適切に構成された新しい
liveStream
リソースを作成します。次に、ステップ 1.3 を繰り返して新しいストリームをブロードキャストにバインドし、ステップ 3.1 ~ 3.3 を繰り返して新しいストリームをテストします。
ステップ 3.6: autoStart
プロパティと autoStop
プロパティを有効にする
テスト段階が正常に完了したら、実際のブロードキャストが開始される前に、ブロードキャストの contentDetails.enableAutoStart
プロパティと contentDetails.enableAutoStop
プロパティを true
に設定できます。テストではブロードキャストが実際に開始されるため、テスト段階の前にこれらのプロパティを true
に設定することはできません。
ステージ 4: ブロードキャスト
このステージでは、ブロードキャスト動画をユーザーが視聴できるようにします。
ステップ 4.1: 動画を開始する
動画ストリームへの動画の転送を開始します。
ステップ 4.2: 動画ストリームが有効であることを確認する
liveStreams.list
メソッドを呼び出して、ブロードキャストに関連付けられている liveStream
リソースを取得します。status.streamStatus
プロパティの値が active
であることを確認します。これは、YouTube サーバーがエンコーダからデータを正しく受信していることを示します。
ステップ 4.3: ブロードキャストのステータスをライブに移行する
重要: この手順を行うと、動画が視聴者に公開されます。
liveBroadcasts.transition
メソッドを呼び出して、ブロードキャストのステータスを更新します。id
パラメータの値をステップ 1.1 で取得したブロードキャスト ID に設定し、broadcastStatus
パラメータの値を live
に設定します。
liveBroadcast
リソースの contentDetails.enableAutoStart
プロパティを true
に設定した場合、liveBroadcasts.transition
メソッドを呼び出す必要はありません。
この API 呼び出しを行った後、または contentDetails.enableAutoStart
プロパティを true
に設定した場合はストリーミングを開始した後、通常は 5 ~ 10 秒ほど待ってから移行を完了する必要があります。切り替えには 1 分ほどかかることがあります。その間、API をポーリングしてブロードキャストのステータスを確認する必要があります。移行が完了するまで、ブロードキャストのステータスは liveStarting
になります。移行が完了するとステータスが live
になり、視聴者はモニター ストリームのその時点からブロードキャストを視聴できるようになります。
このコマンドには以下のような影響があることに注意してください。
- ブロードキャストのモニターストリームを有効にしている場合(手順 3.1 を参照)、埋め込みプレーヤーでモニターストリームを確認できます。
- ブロードキャストの
contentDetails.streamDetails.broadcastStreamDelayMs
プロパティに値を設定していた場合、他の視聴者に表示されるブロードキャスト ストリームは、その時間だけ遅延します。
ステップ 4.4: ブロードキャストにミッドロール挿入点を挿入する
liveBroadcasts.cuepoint
メソッドを呼び出して、キューポイントを挿入します。キューポイントによってミッドロールが開始されることがあります。リクエストの本文で指定された cuepoint
リソースで、durationSecs
プロパティを、表示するブレークの長さ(秒単位)に設定します。デフォルト値は 30
です。
この時点で、広告キューポイントが挿入されたときにブロードキャストを視聴していた視聴者の動画プレーヤーで、YouTube が広告の再生を試みます。広告が表示されるかどうかは、広告の掲載状況や視聴者の広告視聴履歴など、さまざまな要因によって決まります。広告ブレークが表示された視聴者は、広告ブレークが終了するとブロードキャストに戻ります。広告が表示されなかった視聴者は、ブレーク中もブロードキャスト ストリームを視聴し続けます。
スタートガイドには、ライブ放送の広告ブレーク中の視聴体験について詳しく説明されています。
ステージ 5: ブロードキャストの完了
ステップ 5.1: ストリーミングを停止する
これで YouTube ライブ ブロードキャスト システムのテストは終了です。
ステップ 5.2: ブロードキャストのステータスを完了に移行する
ブロードキャストを停止する準備ができたら、API の liveBroadcasts.transition
メソッドを呼び出して、ブロードキャストのステータスを更新します。id
パラメータ値をステップ 1.1 で取得したブロードキャスト ID に設定し、broadcastStatus
パラメータ値を complete
に設定します。
ブロードキャストの contentDetails.recordFromStart
プロパティと contentDetails.enableDvr
プロパティを true
に設定している場合、ライブイベントが終了すると、視聴者はすぐにライブイベントの再生を視聴できます。
ステージ 6: 参照の作成
ライブ録画が完了したら、録画した動画から参照を作成できます。このアクションは、ブロードキャストに一致するユーザー アップロード動画を検索し、ステップ 2.3 で設定した一致ポリシーに従って処理するよう YouTube に指示します。
重要: 参照を作成するには、ブロードキャストの contentDetails.recordFromStart
プロパティを true
に設定しておく必要があります。
ステップ6.1: 動画のステータスについて Data API をポーリングする
YouTube でブロードキャストまたはアップロードされた動画の処理が完了するまで、その動画からリファレンスを作成することはできません。動画の処理が完了したかどうかを確認するには、YouTube Data API の videos.list
メソッドをポーリングし、part
パラメータを status
に、id
パラメータをステップ 1.1 で保存したブロードキャスト ID に設定します。
ポーリング リクエストに対する API レスポンスには、video
リソースが含まれます。そのリソースの status.uploadStatus プロパティの値が processed
の場合は、ステップ 6.2 に進みます。
ステップ 6.2: 処理された動画から参照を作成する
リファレンスを作成するには、Content ID API の references.insert
メソッドを呼び出し、claimId
パラメータをステップ 2.4 で保存した申し立て ID に設定します。
ライブ コンテンツの Content ID 登録
一部の YouTube パートナーは、ブロードキャストが testing
状態に移行する前にリファレンスを作成できますが、この機能はすべてのパートナーが利用できるわけではありません。このフローでは、ライブイベントのブロードキャスト ストリームから参照が生成され、ブロードキャストの進行中に継続的に更新されます。また、YouTube は、ブロードキャストの進行中に、一致するユーザー アップロード動画を探します。ブロードキャストの開始前にリファレンスを作成すると、ブロードキャストの録画が自動的にオンになります。リファレンスの作成後に録画をオフにすることはできません。
ライブ Content ID 配信用にブロードキャストを有効にするには、ステップ 2.4 で動画の所有権を主張した後、ステップ 6.2 で説明されているアクションを試してください。パートナー アカウントがライブブロードキャストの参照を作成する承認をブロードキャストの前に受けていない場合、API は fingerprintingNotAllowed
エラーを返します。その場合は、上記の手順 6.1 と 6.2 で説明したように、ブロードキャストが完了するまで待ってから参照を作成する必要があります。