Questa pagina mostra come creare e gestire i job dell'API Transcoder.
Un job rappresenta l'unità base per la gestione del lavoro con l'API Transcoder. Quando invii un job all'API Transcoder, devi specificare la località geografica in cui deve essere elaborato. Puoi elencare tutti i job in una regione.
Per saperne di più sull'utilizzo dei job e delle risorse Google Cloud correlate in tutte le regioni, consulta Regioni.
Configurare il progetto e l'autenticazione di Google Cloud
Se non hai creato un progetto Google Cloud e le relative credenziali, consulta Prima di iniziare.Creazione di job
Puoi creare job utilizzando un modello di job preimpostato o un modello personalizzato creato da te. Per scoprire come creare un modello di job, consulta Creazione e gestione dei modelli di job. Invece di utilizzare un modello, puoi anche creare un job e inviare direttamente la relativa configurazione nella richiesta.
Creazione di job in base alle preimpostazioni
Per creare un job, utilizza il metodo projects.locations.jobs.create
. Il job transcodifica un file multimediale archiviato come oggetto in Cloud Storage.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- 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:
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_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Testo JSON richiesta:
{ "inputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO", "outputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/", "templateId": "preset/web-hd" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, apporta le seguenti sostituzioni:
- LOCATION: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate:
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_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Esegui questo comando seguente:
Linux, macOS o Cloud Shell
gcloud transcoder jobs create \ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" \ --location=LOCATION \ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" \ --template-id="preset/web-hd"
Windows (PowerShell)
gcloud transcoder jobs create ` --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" ` --location=LOCATION ` --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" ` --template-id="preset/web-hd"
Windows (cmd.exe)
gcloud transcoder jobs create ^ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" ^ --location=LOCATION ^ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" ^ --template-id="preset/web-hd"
Dovresti ricevere una risposta simile alla seguente:
Risposta
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
Creazione di job in base ai modelli di job
Se hai creato almeno un modello di job in una località, puoi specificare un modello di job quando invii una richiesta per creare un job dell'API Transcoder nella località in questione.
Per creare un job, utilizza il metodo projects.locations.jobs.create
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- 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:
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_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
- TEMPLATE_ID: l'ID del modello di job che hai creato.
Se non specifichi un modello di job personalizzato, l'API Transcoder utilizza il modello di job
preset/web-hd
.
Testo JSON richiesta:
{ "inputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO", "outputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/", "templateId": "TEMPLATE_ID" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
- Apporta le seguenti sostituzioni per il comando
gcloud
: - 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 prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - LOCATION: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate:
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_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
- TEMPLATE_ID: l'ID del
modello di job che hai creato. Se non specifichi un modello di job personalizzato, l'API Transcoder utilizza il modello di job
preset/web-hd
. - Esegui questo comando:
gcloud transcoder jobs create \ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" \ --location=LOCATION \ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" \ --template-id="TEMPLATE_ID"
Dovresti vedere una risposta simile alla seguente:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
La risposta è simile alla risposta restituita durante la creazione di un job utilizzando il modello predefinito.
Creazione di job con configurazioni ad hoc
Puoi inviare una configurazione ad-hoc per un job con la richiesta per creare il job.
Per creare un job, utilizza il metodo projects.locations.jobs.create
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- 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:
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_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Testo JSON richiesta:
{ "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": "video-stream1", "videoStream": { "h264": { "heightPixels": 720, "widthPixels": 1280, "bitrateBps": 2500000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, apporta le seguenti sostituzioni:
- LOCATION: la località in cui verrà eseguito il job. Utilizza una delle regioni supportate:
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_VIDEO: il nome del video nel bucket Cloud Storage che stai transcodificando, ad esempio
my-vid.mp4
. Questo campo deve prendere in considerazione qualsiasi cartella creata nel bucket (ad esempioinput/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: il nome della cartella Cloud Storage in cui vuoi salvare gli output video codificati.
Salva i seguenti contenuti in un file denominato request.json
:
{ "config": { "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "video-stream1", "videoStream": { "h264": { "heightPixels": 720, "widthPixels": 1280, "bitrateBps": 2500000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ] } }
Esegui questo comando seguente:
Linux, macOS o Cloud Shell
gcloud transcoder jobs create \ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" \ --location=LOCATION \ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" \ --file="request.json"
Windows (PowerShell)
gcloud transcoder jobs create ` --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" ` --location=LOCATION ` --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" ` --file="request.json"
Windows (cmd.exe)
gcloud transcoder jobs create ^ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" ^ --location=LOCATION ^ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" ^ --file="request.json"
Dovresti ricevere una risposta simile alla seguente:
Risposta
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
Recupero dei dettagli del job
Per controllare i dettagli o lo stato di un job, utilizza il metodo projects.locations.jobs.get
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
- Apporta le seguenti sostituzioni per il comando
gcloud
: - JOB_ID: l'ID del job che hai creato.
- LOCATION: la località del job. Utilizza una delle regioni supportate:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- Esegui questo comando:
gcloud transcoder jobs describe JOB_ID --location=LOCATION
Dovresti vedere una risposta simile alla seguente:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 60, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 60, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
La risposta è simile alla risposta restituita durante la creazione di un job.
Offerte di lavoro nell'elenco
Se vuoi rivedere tutti i job creati in una località, utilizza il metodo projects.locations.jobs.list
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "jobs": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_JOB", "config": { .... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_OTHER_JOB", "config": { .... }, "state": "SUCCEEDED", "createTime": CREATE_TIME, "startTime": START_TIME, "endTime": END_TIME, "ttlAfterCompletionDays": 30 } ] }
gcloud CLI
- Apporta le seguenti sostituzioni per il comando
gcloud
: - LOCATION: la località del tuo job. Utilizza una delle regioni supportate:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- Esegui questo comando:
gcloud transcoder jobs list --location=LOCATION
Dovresti vedere una risposta simile alla seguente:NAME STATE FAILURE_REASON projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID SUCCEEDED projects/PROJECT_NUMBER/locations/LOCATION/jobs/abc123 SUCCEEDED
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
Risultati aggiuntivi
La risposta dei job di elenco può includere un elemento nextPageToken
, che puoi utilizzare per recuperare risultati aggiuntivi:
{ "jobs": [ ... ], "nextPageToken": "NEXT_PAGE_TOKEN" }
Nel seguente esempio curl
, puoi inviare un'altra richiesta e includere il valore NEXT_PAGE_TOKEN per elencare i job aggiuntivi, in modo simile al seguente:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ https://transcoder.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?pageToken=NEXT_PAGE_TOKEN
Per ulteriori informazioni sull'utilizzo di questo token, consulta la libreria client pertinente.
Filtro dei risultati
Puoi filtrare i risultati del metodo per elencare i job. Ad esempio, esegui questo comando curl
per elencare tutti i job attivi:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ 'https://transcoder.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?filter=-state="FAILED"+AND+-state="SUCCEEDED"'
Questo comando utilizza l'operatore di negazione per elencare i job che non hanno avuto errori AND e job non riusciti. L'elenco risultante contiene job in esecuzione o in attesa (per informazioni sugli stati dei job, consulta ProcessingState
).
Di seguito sono riportati alcuni filtri di esempio:
?filter=state="FAILED"+OR+state="SUCCEEDED"
: elenca i lavori che sono stati completati?filter=createTime+>+"2021-06-09T19:25:21.007649960Z"
: elenca i job creati dopo un determinato timestamp?filter=inputUri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
: elenca i job con un URI specifico di input?filter=config.output.uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
: elenca i job con un determinato URI di output
Per ulteriori informazioni, consulta la sezione AIP-160 - Filtri.
Eliminazione dei job
Per eliminare un job, utilizza il metodo projects.locations.jobs.delete
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{}
gcloud CLI
- Apporta le seguenti sostituzioni per il comando
gcloud
: - JOB_ID: l'ID del job che hai creato.
- LOCATION: la località del job. Utilizza una delle regioni supportate:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- Esegui questo comando:
gcloud transcoder jobs delete JOB_ID --location=LOCATION
Dovresti vedere una risposta simile alla seguente:Deleted job [projects/PROJECT_ID/locations/LOCATION/jobs/JOB_ID].
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Go.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Java.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API PHP.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Python.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida all'API Transcoder mediante le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Transcoder API Ruby.
Passaggi successivi
Scopri di più sulla creazione e gestione dei modelli di job.