Auf dieser Seite wird erläutert, wie Sie mehrere Eingabevideos zu einem einzigen Ausgabevideo kombinieren. Du kannst auch die Zeitachsen der Eingabevideos zuschneiden.
Fügen Sie für jedes Eingabevideo ein Input
-Objekt in das inputs
-Array ein.
Jedes Input
-Objekt definiert den Schlüssel und den URI für das zugehörige Eingabevideo. Sie können ein optionales PreprocessingConfig
-Objekt in ein Input
-Objekt einfügen, um das Eingabevideo zu zuschneiden, aufzufüllen oder eine andere Vorverarbeitung durchzuführen. Das Array inputs
ist nicht geordnet. Sie können Eingabevideos in beliebiger Reihenfolge hinzufügen.
Wenn Sie der Videoausgabezeitachse ein Eingabevideo hinzufügen möchten, fügen Sie dem editList
-Array ein EditAtom
-Objekt hinzu. Das Array editList
ist geordnet. Die erste in diesem Array angegebene Eingabe wird zuerst im Ausgabevideo verwendet, als Nächstes die zweite Eingabe usw. Ein Eingabevideo wird anhand seines Schlüssels identifiziert.
Sie können auch startTimeOffset
und endTimeOffset
angeben, um das Eingabevideo zu schneiden. Diese Felder sind optional. Wenn Sie diese Felder nicht angeben, wird das gesamte Eingabevideo verwendet.
Bei der folgenden Konfiguration werden zwei Eingabevideos zu einem einzigen Ausgabevideo verkettet.
"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
Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID, die unter 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-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Der Name des Cloud Storage-Bucket, den Sie erstellt haben.STORAGE_INPUT_VIDEO1
: 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 zuerst in der Videoausgabezeitachse verwendet.START_TIME_OFFSET1
: Die Startzeit in Sekundenbruchteilen (z. B.0.0
), bezogen auf die erste Eingabevideozeitachse. Mit diesem Feld kannst du Inhalte am Anfang des Videos zuschneiden.END_TIME_OFFSET1
: Die Endzeit in Sekundenbruchteilen (z. B.8.1
), bezogen auf die erste Eingabevideozeitachse. In diesem Feld kannst du Inhalte am Ende des Videos zuschneiden.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 Videoausgabezeitachse verwendet.START_TIME_OFFSET2
: Die Startzeit in Sekundenbruchteilen (z. B.3.5
), bezogen auf die zweite Eingabevideozeitachse. Mit diesem Feld kannst du Inhalte am Anfang des zweiten Videos zuschneiden.END_TIME_OFFSET2
: Die Endzeit in Sekundenbruchteilen (z. B.15
), bezogen auf die zweite Eingabevideozeitachse. In diesem Feld kannst du Inhalte am Ende des zweiten Videos zuschneiden.STORAGE_OUTPUT_FOLDER
: Der Name des Cloud Storage-Ordners, in dem Sie die codierten Videoausgaben speichern möchten.
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort 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 den Befehlgcloud
wie folgt:- LOCATION: Der Standort, an dem Ihr Job ausgeführt wird. Verwenden Sie eine der unterstützten Regionen.
Standorte anzeigen
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME: Der Name des Cloud Storage-Bucket, den Sie erstellt haben.
- STORAGE_INPUT_VIDEO1: 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 zuerst in der Videoausgabezeitachse verwendet. - START_TIME_OFFSET1: Die Startzeit in Sekundenbruchteilen (z. B.
0.0
), bezogen auf die erste Eingabevideozeitachse. Mit diesem Feld kannst du Inhalte am Anfang des Videos zuschneiden. - END_TIME_OFFSET1: Die Endzeit in Sekundenbruchteilen (z. B.
8.1
), bezogen auf die erste Eingabevideozeitachse. In diesem Feld kannst du Inhalte am Ende des Videos zuschneiden. - 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 Videoausgabezeitachse verwendet. - START_TIME_OFFSET2: Die Startzeit in Sekundenbruchteilen (z. B.
3.5
), bezogen auf die zweite Eingabevideozeitachse. Mit diesem Feld kannst du Inhalte am Anfang des zweiten Videos zuschneiden. - END_TIME_OFFSET2: Die Endzeit in Sekundenbruchteilen (z. B.
15
), bezogen auf die zweite Eingabevideozeitachse. In diesem Feld kannst du Inhalte am Ende des zweiten Videos zuschneiden. - STORAGE_OUTPUT_FOLDER: Der Name des Cloud Storage-Ordners, in dem Sie die codierten Videoausgaben speichern möchten.
{ "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 wird. Verwenden Sie eine der unterstützten Regionen.
- Führen Sie den folgenden Befehl aus:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
Die Antwort sollte in etwa so aussehen:{ "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 der Einrichtungsanleitung für C# in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der C# API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für Go in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Go API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für Java in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Java API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für Node.js in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Node.js API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für PHP in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der PHP API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für Python in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Python API-Referenzdokumentation zur Transcoder API.
Richten Sie 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 der Einrichtungsanleitung für Ruby in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Ruby API-Referenzdokumentation zur Transcoder API.
Richten Sie 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
Sehen Sie sich die folgenden Beispielvideos an:
Beide Videos sind sich insofern ähnlich, als sie aus drei Teilen bestehen:
- Filme oder Spiele auf einem Mobilgerät ansehen
- Inhalte auf einem großen Bildschirm ansehen
- Kurze Werbung für das Produkt anzeigen
Sie können diese beiden Videos beispielsweise verketten. Das Ausgabevideo zeigt die Teile 1 und 2 aus dem ersten Video und dann die Teile 2 und 3 aus dem zweiten Video. Sie können diese Verkettung mithilfe der folgenden Zeitverschiebungen durchführen:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Verwenden Sie den vorherigen Code zusammen mit diesen beiden Videos und ihren Zeitverschiebungen, um ein aktionsreiches Ergebnisvideo anzuzeigen.