Livestream-Einstellungen konfigurieren

Auf dieser Seite wird beschrieben, wie Sie Einstellungen für die Erstellung von Eingabeendpunkten oder Kanälen für Livestreamfunktionen wie mehrere Audiotracks, Untertitel und Sprite Sheets konfigurieren.

Durch Eingabe eines Endpunkts konfigurieren

Sie können Konfigurationen für die folgenden Features während der Eingabe-Endpunkterstellung angeben:

IP-Zulassungsliste

Du kannst den Zugriff auf Eingabeendpunkte einschränken, indem du IP-Bereiche angibst, aus denen der Eingabestream stammen soll, z. B. die IP-Adresse des Encoders. Die Videopipeline akzeptiert nur Traffic von IP-Adressen in diesen Bereichen. Die IP-Bereiche müssen im CIDR-Blockformat vorliegen.

Konfigurieren Sie das Feld securityRules in der Ressource Input:

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

Konfiguration über die Kanalerstellung

Beim Erstellen eines Kanals können Sie Konfigurationen für die folgenden Funktionen festlegen:

Mehrere Bitratenstreams

Sie können erweiterte Kanalkonfigurationen erstellen, die mehrere Bitraten, Auflösungen und Framerates unterstützen. Die folgende Konfiguration enthält zwei muxStreams in der Ausgabe: eine mit 360p mit einer Framerate von 30 fps (mux_video_360p30) und eine mit 720p mit einer Framerate von 60 fps (mux_video_720p60). Diese Konfiguration unterstützt auch mehrere Audiobitrates. Weitere Informationen finden Sie unter Empfohlene Bitraten.

{
  "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": [
    {
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Mehrere Audiotracks

Wenn der Eingabestream mehr als einen Audiotrack enthält, verwenden Sie das Objekt AudioMapping, um den Track für jeden AudioStream auszuwählen.

{
  "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": [
    {
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Beachten Sie, dass Shaka Player die folgenden Funktionen für HLS-Streams mit mehreren Audiotracks nicht unterstützt:

  • Alternative Audiowiedergabe mit TS-Segmenten.

  • Sekundäre und alternative Audiotrackauswahl mit fMP4-Segmenten.

Passthrough CEA 608/708 Untertitel

Wenn die Eingabestreams CEA 608/708-Untertitel enthalten, können Sie die Untertitel an die Ausgabestreams weiterleiten. Fügen Sie beim Erstellen einer Channel den folgenden textStream zu elementaryStreams hinzu. Mit textStream werden die CEA-608/708-Untertitel in alle Ausgabevideostreams und -wiedergaben eingebettet.

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

Sprite-Blätter

Zum Generieren eines Sprite-Tabellenblatts konfigurieren Sie das Feld spriteSheets in der Ressource Channel.

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