Questa pagina spiega come inserire overlay nei video transcodificati. Un overlay
è costituito da un'immagine inserita sopra il video di output e può
facoltativamente essere visualizzato o nascosto gradualmente in un periodo di tempo specificato. Per inserire un overlay, utilizza l'array overlays nel modello JobConfig.
Consulta l'elenco dei formati dei file immagine supportati.
Caricare un'immagine su Cloud Storage
Per iniziare, segui questi passaggi per caricare un'immagine di overlay nel bucket Cloud Storage:
- Nella console Google Cloud , vai alla pagina Browser Cloud Storage.
Vai alla pagina Browser Cloud Storage - Fai clic sul nome del bucket per aprirlo.
- Fai clic su Carica file.
- Seleziona un file immagine da caricare dalla macchina locale.
Creare un overlay
Puoi creare due tipi di overlay: statici o animati. Entrambi i tipi di overlay utilizzano un'immagine statica. Puoi mostrare o nascondere gli overlay statici. Gli overlay animati supportano le animazioni di dissolvenza in entrata e in uscita dell'immagine.
Puoi inserire più overlay in un unico video di output.
Creare un overlay statico
Nell'oggetto image, utilizza il campo
uri per specificare
l'immagine di overlay in Cloud Storage. Nell'oggetto resolution, imposta
i valori x e y da 0 a 1.0. Un valore pari a 0 mantiene la risoluzione dell'immagine sorgente
per quella dimensione; un valore pari a 1,0 allunga l'immagine in modo che corrisponda
alla dimensione del video di output. Ad esempio, utilizza i valori x: 1 e y:
0.5 per estendere l'immagine di overlay per tutta la larghezza e metà dell'altezza del video di output.
Nell'array animations, crea un oggetto animationStatic con coordinate x e y
da 0 a 1.0. Queste coordinate si basano sulla risoluzione del video
in uscita. Utilizza i valori x: 0 e y: 0 per posizionare l'angolo in alto a sinistra
della sovrapposizione nell'angolo in alto a sinistra del video di output. Specifica quando l'overlay
deve essere visualizzato nella sequenza temporale del video di output utilizzando il campo startTimeOffset.
Per rimuovere l'animazione statica, crea un oggetto animationEnd. Specifica quando l'animazione deve terminare (ovvero quando l'overlay deve scomparire) nella cronologia del video di output utilizzando il campo startTimeOffset.
Puoi aggiungere questa configurazione a un template di job o includerla in una configurazione di job ad hoc:
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: il tuo ID progetto Google Cloud elencato nelle impostazioni IAM.LOCATION: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate.Mostra le sedius-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage che hai creato.STORAGE_INPUT_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempiomy-vid.mp4. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4).STORAGE_INPUT_OVERLAY: il nome dell'immagine nel bucket Cloud Storage che utilizzi per la sovrapposizione, ad esempiomy-overlay.png. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-overlay.png).STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- Crea un file
request.jsonche definisca i campi del job. Esegui le seguenti sostituzioni per il comandogcloud:- STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage che hai creato.
- STORAGE_INPUT_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempio,input/my-vid.mp4). - STORAGE_INPUT_OVERLAY: il nome del file immagine nel bucket Cloud Storage che utilizzi per la sovrapposizione, ad esempio
my-overlay.png. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempio,input/my-overlay.png). - LOCATION: la località in cui
verrà eseguito il job. Utilizza una località dell'elenco seguente.
Mostra le sedi
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
{ "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" } } ] } ] } }
- Esegui questo comando:
Dovresti visualizzare una risposta simile alla seguente: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#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder C#.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Go.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Java.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Node.js.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder PHP.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Python.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Ruby.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Nel video di output, l'overlay statico ha le seguenti caratteristiche:
- Viene visualizzato all'inizio della sequenza temporale ed è visibile per 10 secondi.
- Si estende per tutta la larghezza e metà dell'altezza del video di output.
- Si trova nell'angolo in alto a sinistra del video di output.
Guarda il video di output di esempio per questa configurazione. Questo video utilizza un'immagine di overlay di esempio.
Creare un overlay animato
Nell'oggetto image, utilizza il campo
uri per specificare
l'immagine di overlay in Cloud Storage. Nell'oggetto resolution, imposta
i valori x e y da 0 a 1.0. Un valore pari a 0 mantiene la risoluzione dell'immagine sorgente
per quella dimensione; un valore pari a 1,0 allunga l'immagine in modo che corrisponda
alla dimensione del video di output. Ad esempio, utilizza i valori x: 0 e y: 0
per mantenere la risoluzione originale dell'immagine di overlay.
Nell'array animations, crea un oggetto animationFade con un fadeType di
FADE_IN. Imposta le coordinate X e Y da 0 a 1.0. Queste coordinate si basano sulla risoluzione del video di output. Utilizza i valori x: 0.5 e y: 0.5 per
posizionare l'angolo in alto a sinistra della sovrapposizione al centro del video di output.
Specifica quando l'overlay deve iniziare a essere visualizzato nella sequenza temporale del video di output
utilizzando il campo startTimeOffset. La sovrapposizione deve essere completamente visibile entro l'ora impostata nel campo endTimeOffset.
Per dissolvere la sovrapposizione, crea un altro oggetto animationFade. Questa volta, imposta
fadeType su FADE_OUT. Inserisci le coordinate della posizione e gli orari di inizio e fine come prima.
Puoi aggiungere questa configurazione a un template di job o includerla in una configurazione di job ad hoc:
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: il tuo ID progetto Google Cloud elencato nelle impostazioni IAM.LOCATION: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate.Mostra le sedius-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage che hai creato.STORAGE_INPUT_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempiomy-vid.mp4. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4).STORAGE_INPUT_OVERLAY: il nome dell'immagine nel bucket Cloud Storage che utilizzi per la sovrapposizione, ad esempiomy-overlay.png. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-overlay.png).STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- Crea un file
request.jsonche definisca i campi del job. Esegui le seguenti sostituzioni per il comandogcloud:- STORAGE_BUCKET_NAME: il nome del bucket Cloud Storage che hai creato.
- STORAGE_INPUT_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempio,input/my-vid.mp4). - STORAGE_INPUT_OVERLAY: il nome del file immagine nel bucket Cloud Storage che utilizzi per la sovrapposizione, ad esempio
my-overlay.png. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempio,input/my-overlay.png). - LOCATION: la località in cui
verrà eseguito il job. Utilizza una località dell'elenco seguente.
Mostra le sedi
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
{ "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" } } ] } ] } }
- Esegui questo comando:
Dovresti visualizzare una risposta simile alla seguente: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#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder C#.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Go.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Java.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Node.js.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder PHP.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Python.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida dell'API Transcoder per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Transcoder Ruby.
Per eseguire l'autenticazione nell'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Nel video risultante, la sovrapposizione animata ha le seguenti caratteristiche:
- Inizia a comparire gradualmente al quinto secondo del video di output. Il valore alfa per l'overlay inizia da 0 e termina a 1.0. L'angolo in alto a sinistra della sovrapposizione viene visualizzato al centro del video di output. L'overlay viene visualizzato alla risoluzione originale dell'immagine overlay.
- Dopo la dissolvenza in entrata, l'overlay viene visualizzato per 2 secondi.
- Inizia a sbiadire al secondo 12 del video di output. Il valore alfa per l'overlay inizia da 1,0 e termina a 0.
- L'animazione scompare dopo 15 secondi.
Guarda il video di output di esempio per questa configurazione. Questo video utilizza un'immagine di overlay di esempio.