ライブ配信をリモート エンドポイントに配信する

このページでは、Secure Reliable Transport(SRT)プロトコルまたは Real-Time Messaging Protocol(RTMP)を使用して、ライブ ストリームの出力をリモート エンドポイントに配信する方法について説明します。SRT と RTMP はどちらもプッシュモードで使用され、エンドポイントにストリームを送信します。サポートされているコンテナ形式は、SRT の場合は MPEG-TS、RTMP の場合は FLV です。

始める前に

このページでは、HLS ライブ ストリームのクイックスタート始める前にの手順が完了していることを前提としています。

選択した配信プロトコルに応じて、プッシュモードで出力を受信するプロバイダに SRT エンドポイントまたは RTMP エンドポイントを作成します。エンドポイント URI の形式はプロトコルによって異なります。

  • SRT の場合: srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID
  • RTMP の場合: rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEY または rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME

SRT_SERVER_IPRTMP_SERVER_IP は、IP アドレスまたはドメイン名のいずれかになります。

入力エンドポイントを作成する

入力エンドポイントを作成するには、projects.locations.inputs.create メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: 入力エンドポイントを作成するロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: 作成する新しい入力エンドポイントのユーザー定義の識別子(入力ストリームの送信先)。この値は 1~63 文字で、先頭と末尾は [a-z0-9] で、文字の間にダッシュ(-)を含めることができます。たとえば、my-input です。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

返された OPERATION_ID をコピーして、次のセクションで使用します。

結果を確認する

projects.locations.operations.get メソッドを使用して、入力エンドポイントが作成されているかどうかを確認します。レスポンスに "done: false" が含まれている場合は、レスポンスに "done: true" が含まれるまでコマンドを繰り返します。リージョンで最初に入力エンドポイントを作成するには、最大 10 分ほどかかることがあります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: 入力エンドポイントが配置されているロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • OPERATION_ID: オペレーションの ID。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "endTime": END_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "createTime": CREATE_TIME,
    "updateTime": UPDATE_TIME,
    "type": "RTMP_PUSH",
    "uri":  INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b",
    "tier": "HD"
  }
}

uri フィールドを探して、返された INPUT_STREAM_URI をコピーし、後で入力ストリームを送信するセクションで使用します。

チャネルを作成します。

チャネルを作成するには、projects.locations.channels.create ソッドを使用します。

チャネル構成では次の点に注意してください。

  • distributionStreams 配列には、配信用のストリームの多重化設定が含まれます。
  • DistributionStream オブジェクトには、keycontainerelementaryStreams フィールドを含める必要があります。

    {
      "distributionStreams": [
        {
          "key": "ds1",
          "container": "ts", // to be used with an SRT distribution
          "elementaryStreams": [
            "es_video_720",
            "es_audio"
          ]
        },
        {
          "key": "ds2",
          "container": "flv", // to be used with an RTMP distribution
          "elementaryStreams": [
            "es_video_640",
            "es_audio"
          ]
        }
      ]
    }
    
  • distributions 配列には、リモート エンドポイントを含む配信構成がリストされます。

  • Distribution オブジェクトの distributionStream フィールドを DistributionStream オブジェクトの key に設定します。

  • SRT 配信の場合は、SrtPushOutputEndpoint オブジェクトの uri作成した SRT エンドポイントに設定します。RTMP 配信の場合は、RtmpPushOutputEndpoint オブジェクトの uri作成した RTMP エンドポイントに設定します。

    {
      "distributions": [
        {
          "key": "pd1",
          "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
          "srtPush": {
            "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
          }
        },
        {
          "key": "pd2",
          "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container
          "rtmpPush": {
            "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/",
            "streamKey": "RTMP_STREAM_KEY"
          }
        }
      ]
    }
    
  • AI 生成の字幕と翻訳された字幕を配信するには、自動字幕起こしと翻訳を構成するガイドをご覧ください。

次のサンプルでは、1 つの DistributionStream オブジェクトと 1 つの Distribution オブジェクトのみを使用します。

REST

SRT

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルを作成するロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: 作成するチャネルのユーザー定義の識別子。この値は 1~63 文字で、先頭と末尾は [a-z0-9] で、文字の間にダッシュ(-)を含めることができます。
  • INPUT_ID: 入力エンドポイントのユーザー定義の識別子
  • BUCKET_NAME: ライブ ストリームのマニフェスト ファイルとセグメント ファイルを保持するために作成した Cloud Storage バケットの名前
  • SRT_SERVER_IP: リモート エンドポイントの IP アドレスまたはドメイン名
  • SRT_SERVER_PORT: リモート エンドポイントのポート番号
  • SRT_SERVER_STREAM_ID: リモート エンドポイントのストリーム ID

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

RTMP

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルを作成するロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: 作成するチャネルのユーザー定義の識別子。この値は 1~63 文字で、先頭と末尾は [a-z0-9] で、文字の間にダッシュ(-)を含めることができます。
  • INPUT_ID: 入力エンドポイントのユーザー定義の識別子
  • BUCKET_NAME: ライブ ストリームのマニフェスト ファイルとセグメント ファイルを保持するために作成した Cloud Storage バケットの名前
  • RTMP_SERVER_IP: リモート エンドポイントの IP アドレスまたはドメイン名
  • RTMP_SERVER_PORT: リモート エンドポイントのポート番号
  • RTMP_APP_NAME: ストリーム名のパス接頭辞
  • RTMP_STREAM_KEY: リモート エンドポイントのストリームキー

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

チャネルを取得する

チャネルを作成したら、projects.locations.channels.get メソッドを使用してチャネルの状態をクエリします。

REST

SRT

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "srtPush": {
        "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
      }
    }
  ]
}

RTMP

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "flv",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "rtmpPush": {
        "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME",
        "streamKey": "RTMP_STREAM_KEY"
      }
    }
  ]
}

完全なレスポンスには、次のフィールドが含まれます。

{
  ...
  "streamingState": "STOPPED",
  "distributions": [
    {
      ...
      "state": "NOT_READY"
      ...
    }
  ]
  ...
}

このレスポンスは、チャンネルのストリーミング状態とチャンネルの配信を示します。

配信が NOT_READY 状態の場合、配信を開始できません。ストリームの配信を開始するには、状態が READY に変わるまで待つ必要があります。

最初の配信ストリームの作成には、最大で 10 分ほどかかることがあります。配信の状態はチャンネルの状態とは独立しています。チャンネルを開始して、配信が READY になるまで待ってから、配信を開始できます。

これでチャンネルを開始できます。

チャネルを開始する

projects.locations.channels.start メソッドを使用してチャネルを開始します。入力ストリームを受け入れるか、出力ストリームを生成する前に、チャネルを開始する必要があります。

リージョン内で最初のチャネルを開始するには 10 分ほどかかります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "start",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

チャネルが開始されたかどうかを確認するには、以前と同様の方法でチャネル情報を取得します。レスポンスには以下が含まれます。

{
  ...
  "streamingState": "AWAITING_INPUT"
  ...
}

入力ストリームを送信する

新しいターミナル ウィンドウを開きます。[結果を確認する] セクションの INPUT_STREAM_URI を使用して、次のコマンドを実行します。

ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
  -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI

チャンネルはストリーミング中ですが、配信はまだ停止しています。

分布を開始する

ディストリビューションを開始するには、READY 状態である必要があります。ライブ ストリーム出力をすべてのリモート エンドポイントに配信するには、projects.locations.channels.startdistribution メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。配信を開始すると、入力ストリームが開始されていない場合は AWAITING_INPUT 状態になり、入力ストリームが指定されたエンドポイントに配信されている場合は DISTRIBUTING 状態になります。

(省略可)一連の分布を開始する

すべての分布を一度に開始するのではなく、一部の分布を開始できます。distributionKeys 配列リストにキーを追加して、開始するディストリビューションをリストします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。
  • DISTRIBUTION_KEYS: 文字列キーのカンマ区切りリスト(例: "pd1"

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

ディストリビューションが実行されていることを確認する

配信が開始されたことを確認するには、以前と同様の方法でチャネル情報を取得します。レスポンスには以下が含まれます。

{
  "distributions": [
    {
      ...
      "state": "DISTRIBUTING"
      ...
    },
    ...
  ]
}

リモート SRT サーバーまたは RTMP サーバーで、作成したエンドポイントがデータを受信していることを確認します。

配信を停止する

すべてのリモート エンドポイントへのライブ ストリーム出力の配信を停止するには、projects.locations.channels.stopdistribution メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

(省略可)一連の分布を停止する

すべての配布を一度に停止するのではなく、配布のセットを停止できます。停止する分布のキーを distributionKeys 配列リストに追加して、停止する分布をリストします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。
  • DISTRIBUTION_KEYS: 文字列キーのカンマ区切りリスト(例: "pd1"

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

SRT 暗号化のサポート

SRT プロトコルを使用してライブ ストリーム出力をリモート エンドポイントに配信する場合、Live Stream API は AES 暗号化でライブ ストリーム コンテンツを保護します。

パスフレーズを作成し、リモート SRT サーバーを準備する

開始する前に、リモート SRT サーバーに準拠した SRT パスフレーズを作成します。通常、パスフレーズは 10 ~ 79 文字の文字列です。

リモート SRT サーバーに同じパスフレーズを設定して、復号プロセスが機能することを確認します。手順については、リモート SRT サーバーのユーザーガイドを参照してください。

パスフレーズを Secret Manager に追加する

Live Stream API はパスフレーズを直接受け付けたり管理したりしません。パスフレーズは、Google Secret Manager を介して Live Stream API と共有する必要があります。

チャネルを構成する前に、次の手順をすべて完了する必要があります。

  1. Secret Manager でシークレットを作成します。
  2. Live Stream API がシークレット コンテンツにアクセスできるように、シークレットの Identity and Access Management 権限を構成します。これを行うには、secretmanager.secretAccessor ロールを service-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com サービス アカウントに付与します(これは、サービス アカウントが Cloud Storage バケットにアクセスする方法と同様です)。
  3. 作成したシークレット バージョンのリソース名(例: projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID)を見つけます。この名前は、チャネルを構成するときに必要になります。

チャネルを構成する

パスフレーズの Secret バージョンは SrtPushOutputEndpoint 内で指定されます。

{
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
      "srtPush": {
        "uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
        "passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
      }
    }
  ]
}

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、以下の手順に沿ってください。

チャネルを停止する

projects.locations.channels.stop メソッドを使用してチャネルを停止します。チャネルは削除する前に停止する必要があります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stop",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

入力ストリームを停止する

ffmpeg を使用して入力ストリームを送信した場合、チャネルを停止すると接続が自動的に切断されます。

チャネルを削除する

projects.locations.channels.delete メソッドを使用してチャネルを削除します。チャネルで使用されている入力エンドポイントを削除する前に、そのチャネルを削除する必要があります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: チャネルがあるロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: チャネルのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

入力エンドポイントを削除する

projects.locations.inputs.delete メソッドを使用して、入力エンドポイントを削除します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号。これは、IAM 設定ページの [プロジェクト番号] フィールドにあります。
  • LOCATION: 入力エンドポイントが配置されているロケーション。サポートされているリージョンのいずれかを使用します。
    ロケーションを表示
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: 入力エンドポイントのユーザー定義の識別子

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

新しいオペレーション ID を使用して、オペレーションの結果を確認できます。

Cloud Storage バケットを削除する

  1. Google Cloud コンソールで、Cloud Storage の [ブラウザ] ページに移動します。

    [Cloud Storage ブラウザ] ページに移動

  2. 作成したバケットの横にあるチェックボックスをオンにします。

  3. [削除] をクリックします。

  4. 表示されるダイアログ ウィンドウで、[削除] をクリックしてバケットとそのコンテンツを削除します。