Automatische Untertitel und Übersetzungen konfigurieren

Auf dieser Seite wird erläutert, wie du KI-generierte Untertitel und übersetzte Untertitel (also Übersetzungen) für einen Livestream konfigurierst.

KI-generierte Untertitel und Übersetzungen werden für HLS- und DASH-Livestreams unterstützt.

Hinweise

Auf dieser Seite wird davon ausgegangen, dass Sie die Schritte im Abschnitt Vorbereitung der Kurzanleitung für einen HLS-Livestream oder der Kurzanleitung für einen MPEG-DASH-Livestream ausgeführt haben.

Unterstützte Standorte

Sprachcodes für KI-generierte Untertitel werden standortbezogen unterstützt.

Standorte anzeigen

Standort Unterstützte Sprachcodes
asia-northeast1 en-US
asia-south1 en-IN
en-GB
en-US
asia-southeast1 en-US
australia-southeast1 en-AU
europe-west1 da-DK
nl-NL
en-GB
en-US
fr-FR
de-DE
it-IT
es-ES
europe-west2 en-GB
europe-west3 da-DK
nl-NL
en-GB
en-US
fr-FR
de-DE
it-IT
es-ES
northamerica-northeast1 en-CA
fr-CA
us-central1 en-US
pt-BR
es-CO
es-MX
es-US
us-east1 en-US
pt-BR
es-CO
es-MX
es-US
us-west1 en-US
pt-BR
es-CO
es-MX
es-US

Die KI-basierte Übersetzungsfunktion wird nur auf us-west1 und europe-west1 unterstützt.

Verwenden Sie entweder us-west1 oder europe-west1 für alle API-Anfragen auf dieser Seite.

Eingabeendpunkt erstellen

Verwenden Sie zum Erstellen des Eingabeendpunkts die Methode projects.locations.inputs.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Speicherort, an dem der Eingabeendpunkt erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: Eine benutzerdefinierte ID für den neuen Eingabeendpunkt, der erstellt werden soll (an den Sie Ihren Eingabestream senden). Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten. Beispiel: my-input

JSON-Text der Anfrage:

{
  "type": "RTMP_PUSH"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "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
}

Kopieren Sie den zurückgegebenen OPERATION_ID zur Verwendung im nächsten Abschnitt.

Ergebnis prüfen

Verwenden Sie die Methode projects.locations.operations.get, um zu prüfen, ob der Eingabeendpunkt erstellt wurde. Wenn die Antwort "done: false" enthält, wiederholen Sie den Befehl, bis die Antwort "done: true" enthält. Das Erstellen des ersten Eingabeendpunkts in einer Region kann bis zu 10 Minuten dauern.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Eingabeendpunkts. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: die Kennung für den Vorgang

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "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"
  }
}

Suchen Sie das Feld uri und kopieren Sie den zurückgegebenen INPUT_STREAM_URI zur späteren Verwendung im Abschnitt Eingabestream senden.

Kanal erstellen

Verwenden Sie zum Erstellen des Kanals die Methode projects.locations.channels.create.

Beachten Sie bei der Channelkonfiguration Folgendes:

  • Für die Untertitel wird ein ElementaryStream, ein TextStream, verwendet.

    {
      "key": "webvtt_english_ai",
      "textStream": {
        "codec": "webvtt",
        "displayName": "English (AI captioned)",
        "languageCode": "en-US",
        "mapping": [
          {
            "inputTrack": 1 // audio track number
          }
        ]
      }
    }
    
  • Das Feld TextStream codec muss auf webvtt gesetzt sein.

  • Im Feld TextStream mapping wird inputTrack verwendet, um den Audio-Eingabetrack anzugeben, aus dem Untertitel generiert werden sollen. Die Zuordnung darf nicht das Feld inputCeaChannel enthalten, das nur für vom Nutzer bereitgestellte Untertitel verwendet wird.

  • Setzen Sie languageCode auf die Sprache, die im Audiotrack gesprochen wird.

  • Der Elementarstream wird verwendet, um ein MuxStream mit dem Schlüssel vtt_english_ai zu erstellen.

    {
      "key": "vtt_english_ai",
      "container": "vtt",
      "elementaryStreams": [
        "webvtt_english_ai"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
    

    Dieser Mux-Stream wird dann sowohl in HLS- als auch in DASH-Manifesten referenziert.

    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts",
        "vtt_english_ai"
      ],
      "maxSegmentCount": 5
    }
    

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: der Ort, an dem der Channel erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: Eine benutzerdefinierte Kennung für den zu erstellenden Channel. Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten.
  • INPUT_ID: die benutzerdefinierte Kennung für den Eingabeendpunkt
  • BUCKET_NAME: Der Name des Cloud Storage-Buckets, den Sie zum Speichern des Livestream-Manifests und der Segmentdateien erstellt haben.

JSON-Text der Anfrage:

{
  "inputAttachments": [
    {
      "key": "my-input",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "profile": "high",
          "widthPixels": 1280,
          "heightPixels": 720,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "webvtt_english_ai",
      "textStream": {
        "codec": "webvtt",
        "displayName": "English (AI captioned)",
        "languageCode": "en-US",
        "mapping": [
          {
            "inputTrack": 1
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_fmp4",
      "container": "fmp4",
      "elementaryStreams": [
        "es_video"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_fmp4",
      "container": "fmp4",
      "elementaryStreams": [
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "vtt_english_ai",
      "container": "vtt",
      "elementaryStreams": [
        "webvtt_english_ai"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_fmp4",
        "mux_audio_fmp4",
        "vtt_english_ai"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts",
        "vtt_english_ai"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Kanal abrufen

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Nachdem der Channel erstellt wurde, können Sie den Channelstatus mit der Methode projects.locations.channels.get abfragen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Die vollständige Antwort enthält das folgende Feld:

{
  ...
  "streamingState": "STOPPED"
  ...
}

Diese Antwort bedeutet, dass Sie den Channel jetzt starten können.

Kanal starten

Verwenden Sie die Methode projects.locations.channels.start, um den Channel zu starten. Ein Channel muss gestartet werden, bevor er Eingabestreams empfangen oder einen Ausgabestream generieren kann.

Das Starten des ersten Kanals in einer Region dauert etwa 10 Minuten.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Um festzustellen, ob der Channel gestartet wurde, rufen Sie die Channelinformationen ab, wie zuvor beschrieben. Die Antwort sollte Folgendes enthalten:

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

Eingabestream senden

Nachdem der Kanal bereit ist, senden Sie einen Eingabestream an den Eingabeendpunkt, um den Livestream zu generieren. Sie können eine MP4-Datei (oder ein anderes TEST_VOD_FILE) mit Untertiteln herunterladen und ffmpeg verwenden, um sie an den Eingabeendpunkt zu senden.

Öffnen Sie ein neues Terminalfenster. Führen Sie den folgenden Befehl mit dem INPUT_STREAM_URI aus dem Abschnitt Ergebnis prüfen aus:

ffmpeg -re -stream_loop -1 -i "TEST_VOD_FILE" \
  -c:v copy -c:a aac -strict 2 -f "flv" "INPUT_STREAM_URI"

Untertitel im Ausgabemanifest prüfen

Führen Sie den folgenden Befehl aus, um den Inhalt des generierten HLS-Manifests aufzurufen:

gcloud storage cat gs://BUCKET_NAME/main.m3u8

Die KI-generierten englischen WebVTT-Untertitel werden im Ausgabemanifest ähnlich wie im Folgenden angezeigt:

#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub",LANGUAGE="en-US",NAME="English (AI captioned)",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,URI="vtt_english_ai/index-1.m3u8"

Kanal beenden

Sie müssen einen Kanal beenden, bevor Sie die Kanalkonfiguration aktualisieren können.

Verwenden Sie die Methode projects.locations.channels.stop, um den Channel zu stoppen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Channelkonfiguration für eine Übersetzung aktualisieren

Aktualisiere die Kanalkonfiguration, um übersetzte Untertitel (also eine Übersetzung) einzufügen.

Beachten Sie die folgenden Ergänzungen der Channel-Konfiguration:

  • Für die Untertitel einer einzelnen übersetzten Sprache wird ein TextStream, ein ElementaryStream, verwendet.

    {
      "key": "webvtt_spanish_ai",
      "textStream": {
        "codec": "webvtt",
        "displayName": "Spanish (AI captioned)",
        "languageCode": "es-MX",
        "mapping": [
          {
            "inputTrack": 1, // audio track number
            "fromLanguageCode": "en-US" // original audio in English
          }
        ]
      }
    }
    
  • Legen Sie languageCode auf die ausgewählte übersetzte Sprache fest.

  • Legen Sie fromLanguageCode auf die ursprüngliche Ausgangssprache im Audiotrack fest.

  • Der Elementarstream wird verwendet, um ein MuxStream mit dem Schlüssel vtt_spanish_ai zu erstellen.

    {
      "key": "vtt_spanish_ai",
      "container": "vtt",
      "elementaryStreams": [
        "webvtt_spanish_ai"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
    

    Dieser Mux-Stream wird dann sowohl in HLS- als auch in DASH-Manifesten referenziert.

    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts",
        "vtt_english_ai",
        "vtt_spanish_ai"
      ],
      "maxSegmentCount": 5
    }
    

Verwenden Sie zum Aktualisieren des Channels die Methode projects.locations.channels.patch.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: der Ort, an dem der Channel erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: Eine benutzerdefinierte Kennung für den zu erstellenden Channel. Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten.

JSON-Text der Anfrage:

{
  "inputAttachments": [
    {
      "key": "my-input",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "profile": "high",
          "widthPixels": 1280,
          "heightPixels": 720,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "webvtt_english_ai",
      "textStream": {
        "codec": "webvtt",
        "displayName": "English (AI captioned)",
        "languageCode": "en-US",
        "mapping": [
          {
            "inputTrack": 1
          }
        ]
      }
    },
    {
      "key": "webvtt_spanish_ai",
      "textStream": {
        "codec": "webvtt",
        "displayName": "Spanish (AI captioned)",
        "languageCode": "es-MX",
        "mapping": [
          {
            "inputTrack": 1,
            "fromLanguageCode": "en-US"
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_fmp4",
      "container": "fmp4",
      "elementaryStreams": [
        "es_video"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_fmp4",
      "container": "fmp4",
      "elementaryStreams": [
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "vtt_english_ai",
      "container": "vtt",
      "elementaryStreams": [
        "webvtt_english_ai"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "vtt_spanish_ai",
      "container": "vtt",
      "elementaryStreams": [
        "webvtt_spanish_ai"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_fmp4",
        "mux_audio_fmp4",
        "vtt_english_ai",
        "vtt_spanish_ai"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts",
        "vtt_english_ai",
        "vtt_spanish_ai"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID prüfen.

Channel neu starten und Eingabestream noch einmal senden

Starte den Kanal wie zuvor und sende den Eingabestream noch einmal.

Übersetzung im Ausgabemanifest prüfen

Führen Sie den folgenden Befehl aus, um den Inhalt des generierten HLS-Manifests aufzurufen:

gcloud storage cat gs://BUCKET_NAME/main.m3u8

Die KI-generierten WebVTT-Untertitel auf Englisch und Spanisch werden im Ausgabemanifest in etwa so angezeigt:

#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub",LANGUAGE="en-US",NAME="English (AI captioned)",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,URI="vtt_english_ai/index-1.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub",LANGUAGE="es-MX",NAME="Spanish (AI captioned)",AUTOSELECT=NO,DEFAULT=NO,FORCED=NO,URI="vtt_spanish_ai/index-1.m3u8"

KI‑generierte Transkripte für die Verteilung konfigurieren

Bevor Sie KI-generierte Untertitel und Übersetzungen für die Verteilung konfigurieren, sollten Sie sich damit vertraut machen, wie Sie Livestreams an Remote-Endpunkte verteilen.

Wenn Sie KI-generierte Untertitel und Übersetzungen an Remote-Endpunkte verteilen möchten, verweisen Sie nicht auf die Textstreams im webvtt-Format, die zuvor beim Erstellen eines Kanals mit KI-generierten Untertiteln und Aktualisieren eines Kanals für die Übersetzung konfiguriert wurden. Textstreams für die Verteilung müssen eingebettete Untertitel sein, wobei codec auf cea608 oder cea708 gesetzt sein muss.

Beachten Sie bei der Channelkonfiguration Folgendes:

  • Für die Untertitel wird ein ElementaryStream, ein TextStream, verwendet und für die Übersetzung ein anderes ElementaryStream, ein TextStream.

    {
      "key": "embedded_english_ai",
      "textStream": {
        "codec": "cea608",
        "displayName": "English (AI captioned)",
        "languageCode": "en-US",
        "outputCeaChannel": "CC1", // closed caption channel that will contain AI-generated English captions
        "mapping": [
          {
            "inputTrack": 1 // audio track number
          }
        ]
      }
    }
    
    {
      "key": "embedded_spanish_ai",
      "textStream": {
        "codec": "cea608",
        "displayName": "Spanish (AI captioned)",
        "languageCode": "es-MX",
        "outputCeaChannel": "CC2", // closed caption channel that will contain AI-generated Spanish captions
        "mapping": [
          {
            "inputTrack": 1, // audio track number
            "fromLanguageCode": "en-US" // original audio in English
          }
        ]
      }
    }
    
  • Das Feld TextStream codec muss auf cea608 oder cea708 gesetzt sein.

  • Im Feld TextStream mapping wird inputTrack verwendet, um den Audio-Eingabetrack anzugeben, aus dem Untertitel generiert werden sollen. Die Zuordnung darf nicht das Feld inputCeaChannel enthalten, das nur für vom Nutzer bereitgestellte Untertitel verwendet wird.

  • Legen Sie outputCeaChannel auf den Untertitelkanal fest, der KI-generierte Transkripte im Vertriebsstream enthalten soll.

  • Setzen Sie languageCode auf die Sprache, die im Audiotrack gesprochen wird.

  • Die Elementarstreams sind im Feld elementaryStreams des DistributionStream-Objekts enthalten.

    {
      "distributionStreams": [
        {
          "key": "ds1",
          "container": "ts", // to be used with an SRT distribution
          "elementaryStreams": [
            "es_video",
            "es_audio",
            "embedded_english_ai", // distribute both English
            "embedded_spanish_ai"  // and Spanish captions
          ]
        },
        {
          "key": "ds2",
          "container": "flv", // to be used with an RTMP distribution
          "elementaryStreams": [
            "es_video",
            "es_audio",
            "embedded_spanish_ai" // only distribute Spanish captions
          ]
        }
      ]
    }
    

Schließe die Kanalerstellung ab, indem du der Anleitung zum Verteilen von Livestreams an Remote-Endpunkte folgst.

Erweiterte Konfigurationen

Du kannst AutoTranscriptionConfig auf Kanalebene festlegen, um die KI-generierten Textstreams noch besser an deine Bedürfnisse anzupassen.

Zeitangaben für die Untertitelanzeige

Standardmäßig werden KI‑generierte Untertitel asynchron zum Audio und Video angezeigt. Setzen Sie das Feld DisplayTiming in AutoTranscriptionConfig auf SYNC, um sie synchron anzuzeigen.

{
  "autoTranscriptionConfig": {
    "displayTiming": "SYNC"
  }
}

Wenn Untertitel synchron angezeigt werden, verringert sich die Latenz zwischen Audio und Text, aber die gesamte End-to-End-Medienlatenz steigt.

Qualitätspresets

Mit dem Feld QualityPreset in AutoTranscriptionConfig können Sie die Qualitätseinstellungen für KI-generierte Textstreams konfigurieren.

Sie können beispielsweise die Latenz der Textstreamgenerierung weiter reduzieren, indem Sie Folgendes festlegen:

{
  "autoTranscriptionConfig" : {
    "qualityPreset": "LOW_LATENCY"
  }
}

Bereinigen

Kanal beenden

Verwenden Sie die Methode projects.locations.channels.stop, um den Channel zu stoppen. Sie müssen den Channel beenden, bevor Sie ihn löschen können.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Eingabestream beenden

Wenn du ffmpeg zum Senden des Eingabestreams verwendet hast, wird die Verbindung automatisch getrennt, nachdem du den Kanal beendet hast.

Den Kanal löschen

Verwenden Sie die Methode projects.locations.channels.delete, um den Channel zu löschen. Sie müssen den Channel löschen, bevor Sie den vom Channel verwendeten Eingabeendpunkt löschen können.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Eingabeendpunkt löschen

Verwenden Sie die Methode projects.locations.inputs.delete, um den Eingabeendpunkt zu löschen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Eingabeendpunkts. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • 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: die benutzerdefinierte Kennung für den Eingabeendpunkt

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Cloud Storage-Bucket löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite „Cloud Storage-Browser“.

    Zum Cloud Storage-Browser

  2. Klicken Sie das Kästchen neben dem von Ihnen erstellten Bucket an.

  3. Klicken Sie auf Löschen.

  4. Klicken Sie im angezeigten Dialogfeld auf Löschen, um den Bucket und seinen Inhalt zu löschen.