Questa pagina spiega come combinare più video in ingresso in un unico video di output. Puoi anche tagliare le tracce video di input.
Per ogni video di input, aggiungi un oggetto
Input
all'array
inputs
.
Ogni oggetto Input
definisce la chiave e l'URI del video di input associato. Puoi aggiungere un oggetto optionale
PreprocessingConfig
a un Input
per eseguire operazioni di
ritaglio, riempimento o altra preelaborazione
sul video di input. L'array inputs
non è ordinato; puoi aggiungere i video di input in qualsiasi ordine.
Per aggiungere un video di input alla sequenza temporale del video di output, aggiungi un oggetto
EditAtom
all'array
editList
. L'array
editList
è ordinato. Il primo input designato in questa matrice verrà utilizzato per primo nel
video di output, poi il secondo e così via. Puoi identificare un
video di input tramite la relativa chiave.
Puoi anche designare un startTimeOffset
e un endTimeOffset
per tagliare il
video di input. Questi campi sono facoltativi. Se non specifichi questi campi, viene utilizzato l'intero video di input.
La seguente configurazione concatena due video di input in un unico video di output.
"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"
}
],
Puoi aggiungere questa configurazione a un modello di job o includerla in una configurazione di job ad hoc:
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud elencato nelle Impostazioni IAM.LOCATION
: la posizione in cui verrà eseguito il job. Utilizza una delle regioni supportate.Mostra sedius-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
: Il nome del bucket Cloud Storage che hai creato.STORAGE_INPUT_VIDEO1
: il nome di un video nel bucket Cloud Storage di cui stai eseguendo la transcodificazione, ad esempiomy-vid.mp4
. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per primo nella sequenza temporale del video di output.START_TIME_OFFSET1
: il tempo di inizio, in frazioni di secondo (ad esempio0.0
), relativo alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del video.END_TIME_OFFSET1
: il tempo di fine, in frazioni di secondo (ad es.8.1
), rispetto alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dalla fine del video.STORAGE_INPUT_VIDEO2
: il nome di un video nel bucket Cloud Storage di cui stai eseguendo la transcodificazione, ad esempiomy-vid.mp4
. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato come secondo nella sequenza temporale del video di output.START_TIME_OFFSET2
: il tempo di inizio, in frazioni di secondo (ad esempio3.5
), relativo alla seconda sequenza temporale del video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del secondo video.END_TIME_OFFSET2
: il tempo di fine, in frazioni di secondo (ad esempio15
), rispetto alla sequenza temporale del secondo video di input. Utilizza questo campo per tagliare i contenuti dalla fine del secondo video.STORAGE_OUTPUT_FOLDER
: Il nome della cartella Cloud Storage in cui vuoi salvare le uscite video codificate.
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.json
che definisce i campi del job. Apporta le seguenti sostituzioni per il comandogcloud
:- LOCATION: la posizione in cui verrà eseguito il job. Utilizza una delle regioni supportate.
Mostra sedi
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: Il nome del bucket Cloud Storage che hai creato.
- STORAGE_INPUT_VIDEO1:
il nome di un video nel bucket Cloud Storage di cui stai eseguendo la transcodificazione, ad esempio
my-vid.mp4
. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per primo nella sequenza temporale del video di output. - START_TIME_OFFSET1: il
tempo di inizio, in frazioni di secondo (ad esempio
0.0
), relativo alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del video. - END_TIME_OFFSET1: il tempo di fine, in frazioni di secondo (ad es.
8.1
), rispetto alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dalla fine del video. - STORAGE_INPUT_VIDEO2:
il nome di un video nel bucket Cloud Storage di cui stai eseguendo la transcodificazione, ad esempio
my-vid.mp4
. Questo campo deve tenere conto di tutte le cartelle che hai creato nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato come secondo nella sequenza temporale del video di output. - START_TIME_OFFSET2: il
tempo di inizio, in frazioni di secondo (ad esempio
3.5
), relativo alla seconda sequenza temporale del video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del secondo video. - END_TIME_OFFSET2: il tempo di fine, in frazioni di secondo (ad esempio
15
), rispetto alla sequenza temporale del secondo video di input. Utilizza questo campo per tagliare i contenuti dalla fine del secondo video. - STORAGE_OUTPUT_FOLDER: Il nome della cartella Cloud Storage in cui vuoi salvare le uscite video codificate.
{ "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: la posizione in cui verrà eseguito il job. Utilizza una delle regioni supportate.
- 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 C# riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder C#.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione Go riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Go.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Java.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Node.js.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione PHP riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder PHP.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Python.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione Ruby riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Ruby.
Per autenticarti all'API Transcoder, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Esempio
Guarda i seguenti video di esempio:
Entrambi i video sono simili in quanto contengono tre parti:
- Guardare un film o una partita su un dispositivo mobile
- Guardare gli stessi contenuti su uno schermo di casa
- Mostrare un breve testo pubblicitario del prodotto
Ad esempio, puoi concatenare questi due video in modo che il video di output mostri le parti 1 e 2 del primo video e le parti 2 e 3 del secondo video. Puoi eseguire questa concatenazione utilizzando i seguenti offset di tempo:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Utilizza il codice precedente insieme a questi due video e ai relativi offset di tempo per visualizzare un video risultato ricco di azione.