Auf dieser Seite wird erläutert, wie Sie mehrere Eingabevideos zu einem einzigen Ausgabevideo kombinieren. Sie können auch die Zeitachsen der Eingabevideos kürzen.
Fügen Sie für jedes Eingabevideo dem
inputs Array ein
Input Objekt hinzu.
Jedes Input-Objekt
definiert den Schlüssel und den URI für das zugehörige Eingabevideo. Sie können einem Input optional ein
PreprocessingConfig
Objekt hinzufügen, um das Eingabevideo zuzuschneiden
, zu ergänzen oder andere Vorverarbeitungen
daran vorzunehmen. Das inputs
Array ist nicht sortiert. Sie können Eingabevideos in beliebiger Reihenfolge hinzufügen.
Wenn Sie der Zeitachse des Ausgabevideos ein Eingabevideo hinzufügen möchten, fügen Sie demeditList
Array
ein
EditAtomObjekt hinzu. Das
editList
Array ist sortiert. Die erste in diesem Array angegebene Eingabe wird zuerst im Ausgabevideo verwendet, die zweite Eingabe als Nächstes usw. Sie identifizieren ein Eingabevideo anhand seines Schlüssels.
Sie können auch einen startTimeOffset und einen endTimeOffset angeben, um das Eingabevideo zu kürzen. Diese Felder sind optional. Wenn Sie diese Felder nicht angeben, wird das gesamte Eingabevideo verwendet.
Die folgende Konfiguration verkettet zwei Eingabevideos zu einem einzigen Ausgabevideo.
"inputs": [
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2"
}
],
"editList": [
{
"key": "atom1",
"inputs": [
"input1"
],
"startTimeOffset": "START_TIME_OFFSET1s",
"endTimeOffset": "END_TIME_OFFSET1s"
},
{
"key": "atom2",
"inputs": [
"input2"
],
"startTimeOffset": "START_TIME_OFFSET2s",
"endTimeOffset": "END_TIME_OFFSET2s"
}
],
Sie können diese Konfiguration einer Jobvorlage hinzufügen oder sie in eine Ad-hoc-Jobkonfiguration einbinden:
REST
Ersetzen Sie folgende Werte in den Anfragedaten:
PROJECT_ID: Ihre Google Cloud Projekt-ID, die unter den IAM-Einstellungen aufgeführt ist.LOCATION: Der Standort, an dem der Job ausgeführt werden soll. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME: Der Name des Cloud Storage-Bucket, den Sie erstellt haben.STORAGE_INPUT_VIDEO1: Der Name des Videos in Ihrem Cloud Storage-Bucket, das Sie transcodieren, z. B.my-vid.mp4. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-vid.mp4). Dieses Video wird zuerst auf der Zeitachse des Ausgabevideos verwendet.START_TIME_OFFSET1: Die Startzeit in Sekundenbruchteilen (z. B.0.0) relativ zur Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Anfang des Videos entfernen.END_TIME_OFFSET1: Die Endzeit in Sekundenbruchteilen (z. B.8.1) relativ zur Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Ende des Videos entfernen.STORAGE_INPUT_VIDEO2: Der Name des Videos in Ihrem Cloud Storage-Bucket, das Sie transcodieren, z. B.my-vid.mp4. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-vid.mp4). Dieses Video wird als zweites in der Zeitachse des Ausgabevideos verwendet.START_TIME_OFFSET2: The start time, in fractional seconds (for example,3.5), relative to the second input video timeline. Mit diesem Feld können Sie Inhalte vom Anfang des zweiten Videos entfernen.END_TIME_OFFSET2: Die Endzeit in Sekundenbruchteilen (z. B.15) relativ zur Zeitachse des zweiten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Ende von dem zweiten Video entfernen.STORAGE_OUTPUT_FOLDER: Der Name des Cloud Storage-Ordners, in dem die codierten Videoausgaben gespeichert werden sollen.
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/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- Erstellen Sie eine
request.json-Datei, in der die Jobfelder definiert sind. Ersetzen Sie die folgenden Werte für dengcloudBefehl:- LOCATION: Der Standort, an dem Ihr
Job ausgeführt werden soll. Verwenden Sie eine der unterstützten Regionen.
Standorte anzeigen
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_BUCKET_NAME: Der Name des Cloud Storage-Bucket, den Sie erstellt haben.
- STORAGE_INPUT_VIDEO1:
Der Name des Videos in Ihrem Cloud Storage-Bucket, das Sie
transcodieren, z. B.
my-vid.mp4. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-vid.mp4). Dieses Video wird zuerst auf der Zeitachse des Ausgabevideos verwendet. - START_TIME_OFFSET1: Die Startzeit in Sekundenbruchteilen (z. B.
0.0) relativ zur Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Anfang des Videos entfernen. - END_TIME_OFFSET1: Die Endzeit in Sekundenbruchteilen (z. B.
8.1) relativ zur Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Ende des Videos entfernen. - STORAGE_INPUT_VIDEO2:
Der Name eines Videos in Ihrem Cloud Storage-Bucket, das Sie transcodieren, z. B.
my-vid.mp4. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-vid.mp4). Dieses Video wird als zweites in der Zeitachse des Ausgabevideos verwendet. - START_TIME_OFFSET2: Die
Startzeit in Sekundenbruchteilen (z. B.
3.5) relativ zur Zeitachse des zweiten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Anfang des zweiten Videos entfernen. - END_TIME_OFFSET2: Die Endzeit in Sekundenbruchteilen (z. B.
15) relativ zur Zeitachse des zweiten Eingabevideos. Mit diesem Feld können Sie Inhalte vom Ende von dem zweiten Video entfernen. - STORAGE_OUTPUT_FOLDER: Der Name des Cloud Storage-Ordners, in dem die codierten Videoausgaben gespeichert werden sollen.
{ "config": { "inputs": [ { "key": "input1", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1" }, { "key": "input2", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2" } ], "editList": [ { "key": "atom1", "inputs": [ "input1" ], "startTimeOffset": "START_TIME_OFFSET1s", "endTimeOffset": "END_TIME_OFFSET1s" }, { "key": "atom2", "inputs": [ "input2" ], "startTimeOffset": "START_TIME_OFFSET2s", "endTimeOffset": "END_TIME_OFFSET2s" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
- LOCATION: Der Standort, an dem Ihr
Job ausgeführt werden soll. Verwenden Sie eine der unterstützten Regionen.
- Führen Sie dazu diesen Befehl aus:
Sie sollten eine Antwort ähnlich der folgenden sehen:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von C# in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Transcoder API C# API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Transcoder API Go API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Transcoder API Java API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Node.js Schritten zur Einrichtung in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Transcoder API Node.js API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
PHP
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den PHP Schritten zur Einrichtung in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Transcoder API PHP API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Python Schritten zur Einrichtung von Python in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Ruby
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Ruby Schritten zur Einrichtung in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API Ruby API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei der Transcoder API zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Beispiel
Betrachten Sie die folgenden Beispielvideos:
Beide Videos sind ähnlich, da sie drei Teile enthalten:
- Einen Film oder ein Spiel auf einem Mobilgerät ansehen
- Denselben Inhalt auf einem großen Bildschirm ansehen
- Kurzen Anzeigentext für das Produkt anzeigen
Sie können diese beiden Videos beispielsweise so verketten, dass das Ausgabevideo die Teile 1 und 2 aus dem ersten Video und dann die Teile 2 und 3 aus dem zweiten Video zeigt. Diese Verkettung lässt sich mit den folgenden Zeit-Offsets erreichen:
- ForBiggerEscapes.mp4
startTimeOffset:0sendTimeOffset:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset:3.5sendTimeOffset:15s
Verwenden Sie den vorherigen Code zusammen mit diesen beiden Videos und ihren Zeit-Offsets, um ein actionreiches Ergebnisvideo zu erhalten.