Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ライブストリームを視聴する

最終更新 Markdown で表示Agent セットアップ

Live Input が配信の受信を始めると、入力の modeautomatic の場合、新しい動画が自動で作成されます。

視聴するには、Stream 組み込みの Player を使うか、HLS / DASH マニフェストを使ったカスタムプレーヤーを使います。

Live Input ID または Video ID で表示する

Stream Player を使う場合も、マニフェスト付きのカスタムプレーヤーを使う場合も、Live Input ID または特定の Video ID を参照できます。主な違いは、配信が終了したあとの動きです。

プレーヤーに、配信中ならその配信を常に表示し、入力がアイドルなら 「Stream has not started」 メッセージを出したい場合は、Live Input ID を使います。クリエイター、チャンネル、定期番組向けのページに向いています。Live Input ID は入力作成時に払い出され、変わりません。

1 回の配信、または終了後の録画だけを表示したい場合は、Video ID を使います。単発イベント、特定の回、特定の日付向けのページに向いています。配信が 開始するたび新しい Video ID が生成されます。

後述の DVR モードを使う場合は、追加の考慮点があります。

Stream の URL は、生成しやすいようにテンプレート化されています。

Stream 組み込み Player の URL 形式:

https://customer-<CODE>.cloudflarestream.com/<INPUT_ID|VIDEO_ID>/iframe

埋め込みコード一式は、ダッシュボードまたは API で生成できます。

HLS マニフェストの URL 形式:

https://customer-<CODE>.cloudflarestream.com/<INPUT_ID|VIDEO_ID>/manifest/video.m3u8

埋め込みコードやマニフェスト URL は、ダッシュボードまたは API からも取得できます。

ダッシュボードを使う

Stream 組み込みプレーヤーの埋め込みコード、またはカスタムプレーヤー向けの HLS マニフェスト URL を取得するには、次の手順を実行します。

  1. Cloudflare ダッシュボードで Live inputs ページを開きます。

    Live inputs を開く ↗
  2. 一覧からライブ入力を選びます。

  3. 動画の下にある EmbedHLS Manifest URL を確認します。

  4. 使う方を決め、その下の Click to copy を選びます。

ダッシュボードで取得した埋め込みコードまたはマニフェスト URL は、Live Input ID を参照します。

API を使う

プレーヤーコードまたはマニフェスト URL を API で取得するには、Live Input に紐づく動画一覧を取得します。

リクエストbash
curl -X GET \
-H "Authorization: Bearer <API_TOKEN>" \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/live_inputs/<LIVE_INPUT_UID>/videos

1 つのライブ入力には、配信ごとに複数の動画が紐づきます。配信中なら、レスポンスの先頭の動画のステータスは live-inprogress です。それ以外の動画は、オンデマンド再生できる録画です。

配信中の動画を含め、レスポンス内の各動画には HLS / DASH の URL と Stream Player へのリンクがあります。主なプロパティは次のとおりです。

  • preview -- Stream Player で視聴するリンク
  • playback.hls -- HLS マニフェスト
  • playback.dash -- DASH マニフェスト

次の例では、ライブ配信中の動画の state は live-inprogress、以前に録画した動画の state は ready です。

レスポンスjson
{
  "result": [
    {
      "uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
      "thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",

      "status": {
        "state": "live-inprogress",
        "errorReasonCode": "",
        "errorReasonText": ""
      },
      "meta": {
        "name": "Stream Live Test 23 Sep 21 05:44 UTC"
      },
      "created": "2021-09-23T05:44:30.453838Z",
      "modified": "2021-09-23T05:44:30.453838Z",
      "size": 0,
      "preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
      ...

      "playback": {
        "hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
        "dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
      },
      ...
    },
    {
      "uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
      "thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",
      "thumbnailTimestampPct": 0,
      "readyToStream": true,
      "status": {
        "state": "ready",
        "pctComplete": "100.000000",
        "errorReasonCode": "",
        "errorReasonText": ""
      },
      "meta": {
        "name": "CFTV Staging 22 Sep 21 22:12 UTC"
      },
      "created": "2021-09-22T22:12:53.587306Z",
      "modified": "2021-09-23T00:14:05.591333Z",
      "size": 0,
      "preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
      ...
      "playback": {
        "hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
        "dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
      },
    }
  ],
}

これらは Video ID を参照します。

ライブ入力のステータス

ライブ入力が配信中かどうかと、アクティブな動画 ID は、lifecycle エンドポイントへリクエストして確認できます。Stream Player は、入力がアイドルのときに注記を出すために、この確認を自動で行います。カスタムプレーヤーでは追加の対応が必要になることがあります。

curl -X GET \
-H "Authorization: Bearer <API_TOKEN>" \
https://customer-<CODE>.cloudflarestream.com/<INPUT_ID>/lifecycle

次の例では、レスポンスは ID が入力であり、アクティブな videoUID があることを示しています。live の値が、入力が配信中であることを示します。

{
	"isInput": true,
	"videoUID": "55b9b5ce48c3968c6b514c458959d6a",
	"live": true
}
{
	"isInput": true,
	"videoUID": null,
	"live": false
}

ライブ入力 ID 経由でライブストリームを視聴する場合、ライブ入力の録画設定にある requireSignedURLsallowedOrigins が使われます。これらの設定は、動画レベルの設定とは独立しています。

ライブストリーム録画の再生

ライブストリームが終了すると、録画が自動で生成され、60 秒以内に利用できます。視聴と再生を確実にするため、次の点に注意してください。

  • 視聴中にライブストリームが終了した場合、Stream Player の視聴者は 60 秒待ってからプレーヤーを再読み込みし、ライブストリームの録画を視聴します。
  • ライブストリーム終了後、録画のステータスは API で確認できます。動画の state が ready になったら、いずれかのマニフェスト URL で録画をストリーミングできます。

ライブストリームの録画を生成しているあいだ、動画は not-found または not-started と報告されることがあります。

ライブストリーム録画に Stream Player を使っていない場合は、録画の再生方法について ライブストリームの録画とリプレイ を参照してください。

役に立ちましたか?