Auf dieser Seite wird erläutert, wie mehrere Eingabevideos zu einem einzigen Ausgabevideo kombiniert werden. Außerdem kannst du die Zeitleisten der Eingabevideos zuschneiden.
Fügen Sie für jedes Eingabevideo ein Input
-Objekt in das Array inputs
ein.
Jedes Input
-Objekt definiert den Schlüssel und den URI für das zugehörige Eingabevideo. Du kannst einem Input
ein optionales PreprocessingConfig
-Objekt hinzufügen, um das Eingabevideo zu zuschneiden, zu ergänzen oder eine andere Vorverarbeitung durchzuführen. Das Array inputs
ist nicht sortiert. Sie können Eingabevideos in beliebiger Reihenfolge hinzufügen.
Wenn du der Zeitachse des Ausgabevideos ein Eingabevideo hinzufügen möchtest, füge dem Array editList
ein EditAtom
-Objekt hinzu. Das ordnete Array editList
Die erste in diesem Array angegebene Eingabe wird zuerst im Ausgabevideo verwendet, die zweite Eingabe wird als Nächstes verwendet usw. Sie identifizieren ein Eingabevideo anhand seines Schlüssels.
Sie können auch startTimeOffset
und endTimeOffset
festlegen, 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ührt.
"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
STORAGE_BUCKET_NAME
: Der Name des von Ihnen erstellten Cloud Storage-Bucket.STORAGE_INPUT_VIDEO1
: Der Name eines Videos in Ihrem Cloud Storage-Bucket, den 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
: Der Beginn in Bruchteilen von Sekunden (z. B.0.0
) relativ zur Zeitleiste des ersten Eingabevideos. Mit diesem Feld kannst du Inhalte am Anfang des Videos zuschneiden.END_TIME_OFFSET1
: Die Endzeit in Bruchteilen von Sekunden (z. B.8.1
) relativ zur Zeitleiste des ersten Eingabevideos. Mit diesem Feld kannst du Inhalte am Ende des Videos zuschneiden.STORAGE_INPUT_VIDEO2
: Der Name eines Videos in Ihrem Cloud Storage-Bucket, den 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
: Der Beginn in Bruchteilen von Sekunden (z. B.3.5
) relativ zur Zeitleiste des zweiten Eingabevideos. Mit diesem Feld kannst du Inhalte am Anfang des zweiten Videos zuschneiden.END_TIME_OFFSET2
: Die Endzeit in Bruchteilen von Sekunden (z. B.15
) relativ zur Zeitleiste des zweiten Eingabevideos. Mit diesem Feld kannst du Inhalte am Ende des zweiten Videos zuschneiden.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 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 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
- STORAGE_BUCKET_NAME: Der Name des von Ihnen erstellten Cloud Storage-Bucket.
- STORAGE_INPUT_VIDEO1:
Der Name eines Videos in Ihrem Cloud Storage-Bucket, den 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: Der Beginn in Bruchteilen von Sekunden (z. B.
0.0
) relativ zur Zeitleiste des ersten Eingabevideos. Mit diesem Feld kannst du Inhalte am Anfang des Videos zuschneiden. - END_TIME_OFFSET1: Die Endzeit in Bruchteilen von Sekunden (z. B.
8.1
) relativ zur Zeitleiste des ersten Eingabevideos. Mit diesem Feld kannst du Inhalte am Ende des Videos zuschneiden. - STORAGE_INPUT_VIDEO2:
Der Name eines Videos in Ihrem Cloud Storage-Bucket, den 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: Der Beginn in Bruchteilen von Sekunden (z. B.
3.5
) relativ zur Zeitleiste des zweiten Eingabevideos. Mit diesem Feld kannst du Inhalte am Anfang des zweiten Videos zuschneiden. - END_TIME_OFFSET2: Die Endzeit in Bruchteilen von Sekunden (z. B.
15
) relativ zur Zeitleiste des zweiten Eingabevideos. Mit diesem Feld kannst du Inhalte am Ende des zweiten Videos zuschneiden. - 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:
Sie sollten eine Antwort ähnlich der folgenden erhalten: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 C# 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.
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 Go 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.
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 Java 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.
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 Node.js 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.
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 PHP 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.
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 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
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 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
Sehen Sie sich die folgenden Beispielvideos an:
Beide Videos ähneln sich darin, dass sie drei Teile enthalten:
- Filme oder Spiele auf einem Mobilgerät ansehen
- Dieselben Inhalte auf einem großen Bildschirm ansehen
- Kurze Werbung für das Produkt anzeigen
Du kannst beispielsweise diese beiden Videos so zusammenführen, dass im Ausgabevideo Teil 1 und 2 des ersten Videos und dann Teil 2 und 3 des zweiten Videos zu sehen sind. Sie können diese Konkatenierung mit den folgenden Zeitabweichungen erreichen:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Verwende den Code oben zusammen mit diesen beiden Videos und ihren Zeitverzögerungen, um ein Video mit vielen Aktionen zu sehen.