ライブ ストリームの設定を構成する

このページでは、入力エンドポイントまたはチャネル作成時に、複数の音声トラック、字幕、スプライト シートなどのライブ ストリーム機能を構成する方法について説明します。

入力エンドポイントの作成で構成する

入力エンドポイントの作成時に、次の機能の構成を指定できます。

IP 許可リスト

入力ストリームの送信元となる IP 範囲(エンコーダの IP アドレスなど)を指定することで、入力エンドポイントへのアクセスを制限できます。動画パイプラインは、これらの範囲内の IP アドレスからのトラフィックのみを受け入れます。IP 範囲は CIDR ブロック形式で指定する必要があります。

Input リソースの securityRules フィールドを構成します。

{
  "type": "RTMP_PUSH",
  "securityRules": {
    "ipRanges": ["1.2.3.4/32"]
  }
}

チャンネルの作成時に設定する

チャンネルの作成時に、次の機能の構成を指定できます。

複数のビットレート ストリーム

複数のビットレート、解像度、フレームレートをサポートする高度なチャンネル構成を作成できます。次の構成では、2 つの muxStream が生成されています。1 つは 360p でフレームレートは 30 FPS(mux_video_360p30)、もう 1 つは 720p でフレームレートが 60 FPS(mux_video_720p60)です。この構成では、複数の音声ビットレートもサポートしています。詳細については、推奨されるビットレートをご覧ください。

{
  "inputAttachments":[
    {
      "key":"input-primary",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output":{
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video_720p60",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 5500000,
          "frameRate": 60
        }
      }
    },
    {
      "key": "es_video_360p30",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 360,
          "widthPixels": 640,
          "bitrateBps": 400000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio_160k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "es_audio_64k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 64000
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_720p60",
      "elementaryStreams": [
        "es_video_720p60"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_360p30",
      "elementaryStreams": [
        "es_video_360p30"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_160k",
      "elementaryStreams": [
        "es_audio_160k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_64k",
      "elementaryStreams": [
        "es_audio_64k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

複数の音声トラック

入力ストリームに複数の音声トラックが含まれている場合は、AudioMapping オブジェクトを使用して、各 AudioStream のトラックを選択します。

{
  "inputAttachments": [
    {
      "key": "MY-INPUT",
      "input": "/projects/PROJECT-ID/locations/LOCATION/inputs/MY-INPUT",
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME/outputs/"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_first_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 1
          }
        ]
      }
    },
    {
      "key": "es_second_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 2
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video",
      "elementaryStreams": ["es_video"],
    },
    {
      "key": "mux_first_audio",
      "elementaryStreams": ["es_first_audio"],
    },
    {
      "key": "mux_second_audio",
      "elementaryStreams": ["es_second_audio"],
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Shaka プレーヤーは、複数の音声トラックを含む HLS ストリームの次の機能をサポートしていません。

  • TS セグメントを使用した代替音声トラックの再生。

  • fMP4 セグメントを使用したセカンダリ音声トラックと代替音声トラックの選択。

パススルー CEA 608/708 字幕

入力ストリームに CEA 608/708 字幕が含まれている場合は、字幕を出力ストリームに転送できます。Channel を作成するときに、次の textStreamelementaryStreams に追加します。この textStream は、すべての出力動画ストリームとレンディションに CEA 608/708 字幕を埋め込みます。

{
  "key": "captions",
  "textStream": {
    "codec": "cea608"
  }
}

スプライトシート

スプライトシートを生成するには、Channel リソースの spriteSheets フィールドを構成します。

{
  "spriteSheets": [
    {
      "format": "jpeg",
      "filePrefix": "sprite",
      "interval": "2s",
      "spriteWidthPixels": 320,
      "spriteHeightPixels": 240,
      "columnCount": 3,
      "rowCount": 3,
      "quality": 80
    }
  ]
}