このページでは、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_IP と RTMP_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
オブジェクトには、key
、container
、elementaryStreams
フィールドを含める必要があります。{ "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 と共有する必要があります。
チャネルを構成する前に、次の手順をすべて完了する必要があります。
- Secret Manager でシークレットを作成します。
- Live Stream API がシークレット コンテンツにアクセスできるように、シークレットの Identity and Access Management 権限を構成します。これを行うには、
secretmanager.secretAccessor
ロールをservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com
サービス アカウントに付与します(これは、サービス アカウントが Cloud Storage バケットにアクセスする方法と同様です)。 - 作成したシークレット バージョンのリソース名(例:
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 バケットを削除する
Google Cloud コンソールで、Cloud Storage の [ブラウザ] ページに移動します。
作成したバケットの横にあるチェックボックスをオンにします。
[削除] をクリックします。
表示されるダイアログ ウィンドウで、[削除] をクリックしてバケットとそのコンテンツを削除します。