このページでは、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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-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 の [ブラウザ] ページに移動します。
作成したバケットの横にあるチェックボックスをオンにします。
[削除] をクリックします。
表示されるダイアログ ウィンドウで、[削除] をクリックしてバケットとそのコンテンツを削除します。