Auf dieser Seite wird erläutert, wie Sie mehrere Eingabevideos zu einem einzelnen Ausgabevideo kombinieren. Sie können auch die Zeitachsen der Eingabevideos kürzen.
Fügen Sie für jedes Eingabevideo dem Array inputs
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
ein optionales PreprocessingConfig
-Objekt hinzufügen, um das Eingabevideo zu beschneiden, aufzufüllen oder anderweitig vorzuverarbeiten. 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 dem Array editList
das Objekt EditAtom
hinzu. Das Array
editList
> 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 ein startTimeOffset
und ein endTimeOffset
angeben, um das Eingabevideo zu kürzen. 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 zusammengefügt.
"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 diese Werte in den folgenden Anfragedaten:
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
me-west1
me-central1
me-central2
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 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 zum Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte am 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 zum 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 des zweiten Videos 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 werden. Ersetzen Sie die folgenden Werte im Befehlgcloud
:- LOCATION: Der Standort, an dem der Job ausgeführt werden soll. 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
me-west1
me-central1
me-central2
- 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 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 zum Zeitachse des ersten Eingabevideos. Mit diesem Feld können Sie Inhalte am 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 zum 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 des zweiten Videos 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 der Job ausgeführt werden soll. Verwenden Sie eine der unterstützten Regionen.
- Führen Sie dazu diesen Befehl aus:
Die Antwort sieht ungefähr so aus: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#
Folgen Sie der Einrichtungsanleitung für C# in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für C#.
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
Folgen Sie der Einrichtungsanleitung für Go in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für Go.
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
Folgen Sie der Einrichtungsanleitung für Java in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für Java.
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
Folgen Sie der Einrichtungsanleitung für Node.js in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für Node.js.
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
Folgen Sie der Einrichtungsanleitung für PHP in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für PHP.
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
Folgen Sie der Einrichtungsanleitung für Python in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für Python.
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
Folgen Sie der Einrichtungsanleitung für Ruby in der Transcoder API-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Transcoder API für Ruby.
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
Hier einige Beispiele:
Beide Videos sind ähnlich aufgebaut und bestehen aus drei Teilen:
- Filme oder Spiele auf einem Mobilgerät ansehen
- Dieselben Inhalte auf einem großen Bildschirm ansehen
- Kurze Werbung für das Produkt anzeigen
Sie können beispielsweise die beiden Videos so zusammenfügen, dass das Ausgabevideo die Teile 1 und 2 des ersten Videos und dann die Teile 2 und 3 des zweiten Videos enthält. Sie können diese Verkettung mit den folgenden Zeitversätzen erreichen:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Wenn Sie den oben genannten Code zusammen mit diesen beiden Videos und ihren Zeitversätzen verwenden, erhalten Sie ein actionreiches Ergebnisvideo.