Auf dieser Seite wird erläutert, wie Overlays in transcodierte Videos eingefügt werden. Ein Overlay
aus einem Bild besteht, das über dem Ausgabevideo eingefügt wird und
können über einen bestimmten Zeitraum
ein- oder ausgeblendet werden. Verwenden Sie zum Einfügen eines Overlays das Array overlays
in der Vorlage JobConfig
.
Weitere Informationen finden Sie in der Liste der unterstützten Bilddateiformate.
Bild in Cloud Storage hochladen
So laden Sie ein Overlay-Bild in Ihren Cloud Storage-Bucket hoch:
- Wechseln Sie in der Google Cloud Console zur Seite „Cloud Storage-Browser“.
Zum Cloud Storage-Browser - Klicken Sie auf den Namen Ihres Buckets, um ihn zu öffnen.
- Klicken Sie auf Dateien hochladen.
- Wählen Sie eine Bilddatei aus, die von Ihrem lokalen Computer hochgeladen werden soll.
Overlay erstellen
Sie können zwei Arten von Overlays erstellen: statisch oder animiert. Beide Overlay-Typen verwenden ein statisches Bild. Sie können statische Overlays ein- oder ausblenden. Animierte Overlays unterstützen das Ein- und Ausblenden von Animationen des Bilds.
Sie können mehrere Overlays in ein einzelnes Ausgabevideo einfügen.
Statisches Overlay erstellen
Verwenden Sie im image
-Objekt das Feld uri
, um das Overlay-Bild in Cloud Storage anzugeben. Legen Sie im Objekt resolution
die Werte für x und y von 0 bis 1.0 fest. Bei einem Wert von 0 wird die Auflösung des Quell-Images für diese Dimension beibehalten. Bei einem Wert von 1.0 wird das Bild so gestreckt, dass es der Dimension des Ausgabevideos entspricht. Verwenden Sie beispielsweise die Werte x: 1
und y:
0.5
, um das Overlay-Bild auf die volle Breite und die Hälfte der Höhe des Ausgabevideos zu verteilen.
Erstellen Sie im Array animations
ein animationStatic
-Objekt mit x- und y-Koordinaten von 0 bis 1.0. Diese Koordinaten basieren auf der Auflösung der Ausgabevideos. Verwenden Sie die Werte x: 0
und y: 0
, um die linke obere Ecke des Overlays in der oberen linken Ecke des Ausgabevideos zu positionieren. Legen Sie fest, wann das Overlay
sollte in der Zeitachse des Ausgabevideos mithilfe des Felds startTimeOffset
angezeigt werden.
Erstellen Sie zum Entfernen der statischen Animation ein animationEnd
-Objekt. Geben Sie mit dem Feld startTimeOffset
an, wann die Animation enden soll (d. h., das Overlay sollte nicht mehr erscheinen).
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 in einer der unterstützten RegionenStandorte 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-Buckets, den Sie erstellt haben.STORAGE_INPUT_VIDEO
: Der Name des 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
).STORAGE_INPUT_OVERLAY
: Der Name des Bild in Ihrem Cloud Storage-Bucket, das Sie für das Overlay verwenden, z. B.my-overlay.png
. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-overlay.png
).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
:- STORAGE_BUCKET_NAME: Der Name des von Ihnen erstellten Cloud Storage-Buckets.
- STORAGE_INPUT_VIDEO: Der Name des 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
). - STORAGE_INPUT_OVERLAY: Der Name der Bilddatei in Ihrem Cloud Storage-Bucket, die Sie für das Overlay verwenden, z. B.
my-overlay.png
. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket (z. B.input/my-overlay.png
). - LOCATION: Der Standort, an dem
ausgeführt werden. Verwenden Sie einen Standort aus der folgenden Liste.
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_OUTPUT_FOLDER: Die Name des Cloud Storage-Ordners, in dem Sie das codierte Video speichern möchten Ausgaben.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- 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#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C# in der Transcoder API-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Transcoder API C# API Referenzdokumentation.
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-Schnellstart mit Clientbibliotheken. 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 der Einrichtungsanleitung für Java in der Transcoder API-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Transcoder API Java API Referenzdokumentation.
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
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 Transcoder API Node.js API Referenzdokumentation.
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-Schnellstart mit Clientbibliotheken. 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
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 Transcoder API Python API Referenzdokumentation.
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-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Transcoder API Ruby 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.
Das Ausgabe-Overlay weist folgende Merkmale auf:
- Es wird am Anfang der Zeitachse angezeigt und ist zehn Sekunden lang sichtbar.
- Es erstreckt sich über die gesamte Breite und die Hälfte des Ausgabevideos.
- Es befindet sich links oben im Ausgabevideo.
Im Beispielausgabevideo sehen Sie diese Konfiguration. In diesem Video wird ein Beispiel-Overlay-Bild verwendet.
Animiertes Overlay erstellen
Verwenden Sie im image
-Objekt das Feld uri
, um das Overlay-Bild in Cloud Storage anzugeben. Legen Sie im Objekt resolution
die Werte für x und y von 0 bis 1.0 fest. Bei einem Wert von 0 wird die Auflösung des Quell-Images für diese Dimension beibehalten. Bei einem Wert von 1.0 wird das Bild so gestreckt, dass es der Dimension des Ausgabevideos entspricht. Verwenden Sie beispielsweise die Werte x: 0
und y: 0
, um die ursprüngliche Auflösung des Overlay-Bilds beizubehalten.
Erstellen Sie im Array animations
ein animationFade
-Objekt mit einem fadeType
von FADE_IN
. Legen Sie die x- und y-Koordinaten von 0 bis 1.0 fest. Diese Koordinaten basieren auf der Auflösung der Ausgabe des Videos. Verwenden Sie die Werte x: 0.5
und y: 0.5
, um die obere linke Ecke des Overlays in der Mitte des Ausgabevideos zu positionieren.
Geben Sie mithilfe des Felds startTimeOffset
an, wann das Overlay auf der Ausgabevideozeitachse angezeigt werden soll. Das Overlay sollte durch die im Feld endTimeOffset
festgelegte Zeit vollständig sichtbar sein.
Erstellen Sie zum Ausblenden des Overlays ein weiteres animationFade
-Objekt. Setzen Sie das fadeType
dieses Mal auf FADE_OUT
. Geben Sie die Positionskoordinaten ein sowie eine Start- und Endzeit.
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 Cloud Storage-Buckets, den Sie erstellt haben.STORAGE_INPUT_VIDEO
: Der Name des 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
).STORAGE_INPUT_OVERLAY
: Der Name des Bild in Ihrem Cloud Storage-Bucket, das Sie für das Overlay verwenden, z. B.my-overlay.png
. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket erstellt haben (z. B.input/my-overlay.png
).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. Marke den folgenden Ersatz für dengcloud
Befehl:- STORAGE_BUCKET_NAME: Der Name des von Ihnen erstellten Cloud Storage-Buckets.
- STORAGE_INPUT_VIDEO: Der Name des 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
). - STORAGE_INPUT_OVERLAY: Der Name der Bilddatei in Ihrem Cloud Storage-Bucket, die Sie für das Overlay verwenden, z. B.
my-overlay.png
. In diesem Feld sollten alle Ordner berücksichtigt werden, die Sie im Bucket (z. B.input/my-overlay.png
). - LOCATION: Der Standort, an dem
ausgeführt werden. Verwenden Sie einen Standort aus der folgenden Liste.
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_OUTPUT_FOLDER: Die Name des Cloud Storage-Ordners, in dem Sie das codierte Video speichern möchten Ausgaben.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- 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#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C# in der Transcoder API-Schnellstart mit Clientbibliotheken. 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
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 Transcoder API Go API Referenzdokumentation.
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
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 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-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Transcoder API Node.js API Referenzdokumentation.
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
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 Transcoder API PHP API Referenzdokumentation.
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-Schnellstart mit Clientbibliotheken. 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 der Einrichtungsanleitung für Ruby in der Transcoder API-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Transcoder API Ruby 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.
Das animierte Video hat folgende Merkmale:
- Das Video wird nach der 5-Sekunden-Markierung im Ausgabevideo ausgeblendet. Der Alphawert für das Overlay beginnt bei 0 und endet um 1,0. Die obere linke Ecke des Overlays wird in der Mitte des Ausgabevideos angezeigt. Das Overlay wird in der ursprünglichen Auflösung des Overlay-Bilds angezeigt.
- Nach dem Einblenden wird das Overlay 2 Sekunden lang angezeigt.
- Das Video wird bei der 12-Sekunden-Marke im Ausgabevideo nicht mehr eingeblendet. Der Alphawert für das Overlay beginnt bei 1,0 und endet bei 0.
- Die Animation verschwindet um 15 Sekunden.
Sehen Sie sich das Beispielausgabevideo für diese Konfiguration an. In diesem Video wird ein Beispiel-Overlay-Bild verwendet.