Questa pagina spiega come combinare più video di input in un unico video di output. Puoi anche tagliare le sequenze temporali dei video inseriti.
Per ogni video di input, aggiungi un oggetto Input
all'array inputs
.
Ogni oggetto Input
definisce la chiave e l'URI per il video di input associato. Puoi aggiungere un oggetto
PreprocessingConfig
facoltativo a un oggetto Input
per
ritagliare, aggiungere il pad o eseguire altre pre-elaborazioni
sul video di input. L'array inputs
non è ordinato; puoi aggiungere 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
è in ordine. Il primo input designato in questo array verrà utilizzato per primo nel video di output, poi verrà utilizzato il secondo input e così via. Puoi identificare un video di input
dalla chiave.
Puoi anche specificare startTimeOffset
e 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, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud elencato nelle impostazioni IAM.LOCATION
: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate.Mostra localitàus-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-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 che stai transcodificando, ad esempiomy-vid.mp4
. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per primo nella sequenza temporale del video di output.START_TIME_OFFSET1
: l'ora di inizio, in secondi frazionari (ad esempio,0.0
), relativa alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del video.END_TIME_OFFSET1
: l'ora di fine, in secondi frazionari (ad esempio,8.1
), relativa 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 che stai transcodificando, ad esempiomy-vid.mp4
. Questo campo dovrebbe tenere conto di eventuali cartelle create nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per secondo nella sequenza temporale del video di output.START_TIME_OFFSET2
: l'ora di inizio, in secondi frazionari (ad esempio,3.5
), relativa alla seconda sequenza temporale del video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del secondo video.END_TIME_OFFSET2
: l'ora di fine, in secondi frazionari (ad esempio15
), relativa alla sequenza temporale del secondo video di input. Utilizza questo campo per tagliare i contenuti della fine del secondo video.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.json
che definisca i campi del job. Sostituisci il comandogcloud
come segue:- LOCATION: la località in cui verrà eseguito il job. Servirti di una delle regioni supportate.
Mostra località
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-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 che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per primo nella sequenza temporale del video di output. - START_TIME_OFFSET1: l'ora di inizio, in secondi frazionari (ad esempio,
0.0
), relativa alla sequenza temporale del primo video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del video. - END_TIME_OFFSET1: l'ora di fine, in secondi frazionari (ad esempio,
8.1
), relativa 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 che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo dovrebbe tenere conto di eventuali cartelle create nel bucket (ad esempioinput/my-vid.mp4
). Questo video verrà utilizzato per secondo nella sequenza temporale del video di output. - START_TIME_OFFSET2: l'ora di inizio, in secondi frazionari (ad esempio,
3.5
), relativa alla seconda sequenza temporale del video di input. Utilizza questo campo per tagliare i contenuti dall'inizio del secondo video. - END_TIME_OFFSET2: l'ora di fine, in secondi frazionari (ad esempio
15
), relativa alla sequenza temporale del secondo video di input. Utilizza questo campo per tagliare i contenuti della fine del secondo video. - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
{ "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 località in cui verrà eseguito il job. Servirti di una delle regioni supportate.
- Esegui questo comando:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
Dovresti visualizzare una risposta simile alla seguente:{ "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# disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API C# per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby disponibili nella guida rapida dell'API Transcoder sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Ruby per l'API Transcoder.
Per eseguire l'autenticazione all'API Transcoder, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Esempio
Considera i seguenti video di esempio:
Entrambi i video sono simili in quanto contengono tre parti:
- Guardare un film o un gioco su un dispositivo mobile
- Guardare gli stessi contenuti su uno schermo di casa
- Mostra un breve testo pubblicitario per il prodotto
Ad esempio, puoi concatenare questi due video in modo che il video di output mostri le parti uno e due del primo video e le parti due e tre 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 dei risultati ricco di azione.