Questa pagina spiega come aggiungere sottotitoli codificati e sottotitoli a un video di output.
I sottotitoli codificati (o semplicemente i sottotitoli codificati) sono la rappresentazione visiva dell'audio di un video. I sottotitoli codificati sono in genere nella stessa lingua dell'audio e includono suoni di sottofondo e cambi di speaker.
I sottotitoli vengono generalmente utilizzati per tradurre i dialoghi di un video in un lingua diversa. I sottotitoli di solito non includono suoni di sottofondo e cambi di speaker.
Questa pagina utilizza il termine file dei sottotitoli di input per fare riferimento a un file di testo contenente sottotitoli o sottotitoli codificati. Devi fornire questo file come input per un job.
Aggiungere sottotitoli codificati e sottotitoli a una configurazione del job
Consulta la sezione relativa a input e output supportati per conoscere i formati dei file di sottotitoli codificati supportati in input. Un file video di esempio e file di sottotitoli di input di esempio per testare la tua configurazione.
Utilizza le informazioni nelle sezioni seguenti per aggiungere sottotitoli e sottotitoli codificati a un lavoro configurazione. Questa pagina presuppone che tu abbia dimestichezza con un JobConfig di base. Per ulteriori informazioni sulla creazione di job di transcodifica, consulta Creazione e gestione dei job.
Aggiungi didascalie
Per creare un job che incorpora i sottotitoli codificati nel contenitore del file video di output, procedi nel seguente modo: seguenti:
Aggiungi un Array
inputs
fino all'inizio della configurazione del job.Aggiungi un oggetto
Input
all'arrayinputs
che definisce la chiave e l'URI per il video di input associato.Aggiungi un altro oggetto
Input
che includa il percorso del file di sottotitoli codificati di input.Aggiungi un
editList
alla configurazione del job. Questo array viene utilizzato per aggiungere input alla sequenza temporale del video di output.Aggiungere una
EditAtom
all'arrayeditList
. Questo OggettoEditAtom
deve fare riferimento alle chiavi per il video di input e ai sottotitoli codificati che hai aggiunto Arrayinputs
. Puoi designare unstartTimeOffset
e unendTimeOffset
per tagliare il video di input.Aggiungi i sottotitoli codificati ai contenitori di output aggiungendo un oggetto
textStream
all'arrayelementaryStreams
. È supportato un solo stream di testo incorporato che viene aggiunto a tutti i video di output (perché esiste una sola sequenza temporale di output).Utilizza l'array
mapping
nell'oggetto di configurazionetextStream
per fare riferimento alla chiave dell'oggettoEditAtom
.
L'esempio di configurazione seguente incorpora i sottotitoli codificati CEA-608 in un video.
Puoi aggiungere questa configurazione modello di lavoro o includerlo in un configurazione ad hoc dei job:
Aggiungi sottotitoli
Per creare un job che produce file di sottotitoli multilingue riprodotti da un file manifest, segui questi passaggi:
Aggiungi un Array
inputs
alla configurazione del job.Aggiungere un oggetto
Input
all'arrayinputs
che definisce la chiave e l'URI dell'input associato video.Aggiungi un altro oggetto
Input
che definisce l'URI per il file dei sottotitoli codificati di input.Aggiungi un array
editList
alla configurazione. Questo array viene utilizzato per aggiungere gli input alla sequenza temporale del video di output.Aggiungi un oggetto
EditAtom
all'arrayeditList
che fa riferimento agli oggetti nell'arrayinputs
per chiave. Puoi designare unstartTimeOffset
e unendTimeOffset
per tagliare il video di input.Aggiungi i sottotitoli codificati ai container di output aggiungendo un oggetto
textStream
oggettoelementaryStreams
un array di dati.Per il file di sottotitoli autonomo, specifica il contenitore nel Array
muxStream
; vedrai gli oggetti con le chiavitext-vtt-en
etext-vtt-es
nel seguente configurazione. Per i sottotitoli codificati incorporati, è sufficiente lo stream elementare.
La seguente configurazione genera più file WebVTT, uno per i sottotitoli in inglese e uno per i sottotitoli in spagnolo. I sottotitoli DASH nei file WebVTT sono nel formato container fMP4.
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
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_VIDEO
: il nome di un video nel tuo 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
).STORAGE_SUBTITLES_FILE1
: il nome del dei sottotitoli nel tuo bucket Cloud Storage, ad esempiosubtitles-en.srt
per i sottotitoli in inglese. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: il nome di un altro file di sottotitoli nel bucket Cloud Storage, ad esempiosubtitles-es.srt
per i sottotitoli in spagnolo. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/subtitles-es.srt
).STORAGE_OUTPUT_FOLDER
: il nome del nella cartella di output del bucket 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
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
LOCATION
: la posizione in cui verrà eseguito il job. Utilizza le funzionalità di in una delle regioni supportate.Sedi dei negozius-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_VIDEO
: il nome di un video nel tuo 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
).STORAGE_SUBTITLES_FILE1
: il nome del dei sottotitoli nel tuo bucket Cloud Storage, ad esempiosubtitles-en.srt
per i sottotitoli in inglese. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: il nome di un altro file di sottotitoli nel bucket Cloud Storage, ad esempiosubtitles-es.srt
per i sottotitoli in spagnolo. Questo campo deve tenere conto di eventuali cartelle create nel bucket (ad esempioinput/subtitles-es.srt
).STORAGE_OUTPUT_FOLDER
: il nome del nella cartella di output del bucket Cloud Storage in cui vuoi salvare gli output video codificati.
Salva i seguenti contenuti in un file denominato request.json
:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" }, { "key": "subtitle_input_en", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_SUBTITLES_FILE1" }, { "key": "subtitle_input_es", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_SUBTITLES_FILE2" } ], "editList": [ { "key": "atom0", "inputs": [ "input0", "subtitle_input_en", "subtitle_input_es" ] } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } }, { "key": "vtt-stream-en", "textStream": { "codec": "webvtt", "languageCode": "en-US", "displayName": "English", "mapping": [ { "atomKey": "atom0", "inputKey": "subtitle_input_en" } ] } }, { "key": "vtt-stream-es", "textStream": { "codec": "webvtt", "languageCode": "es-ES", "displayName": "Spanish", "mapping": [ { "atomKey": "atom0", "inputKey": "subtitle_input_es" } ] } } ], "muxStreams": [ { "key": "sd-hls-fmp4", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "audio-hls-fmp4", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] }, { "key": "text-vtt-en", "container": "vtt", "elementaryStreams": [ "vtt-stream-en" ], "segmentSettings": { "segmentDuration": "6s", "individualSegments": true } }, { "key": "text-vtt-es", "container": "vtt", "elementaryStreams": [ "vtt-stream-es" ], "segmentSettings": { "segmentDuration": "6s", "individualSegments": true } } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "sd-hls-fmp4", "audio-hls-fmp4", "text-vtt-en", "text-vtt-es" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (PowerShell)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (cmd.exe)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Dovresti ricevere una risposta simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
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 API Go dell'API Transcoder documentazione di riferimento.
Per autenticarti all'API Transcoder, configura le 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 Java riportate nella guida rapida all'API Transcoder che utilizza le librerie client. Per ulteriori informazioni, consulta API Java dell'API Transcoder documentazione di riferimento.
Per eseguire l'autenticazione nell'API Transcoder, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida dell'API Transcoder con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Node.js.
Per eseguire l'autenticazione nell'API Transcoder, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida dell'API Transcoder con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Transcoder Python.
Per eseguire l'autenticazione nell'API Transcoder, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Riproduci il video.
Per visualizzare i sottotitoli su Windows, riproduci il video nella sezione Film e nell'app TV. Marca assicurati di selezionare la traccia dei sottotitoli.
Per visualizzare i sottotitoli su MacOS o Linux, puoi riprodurre il video in Shaka Player. Assicurati di attiva i sottotitoli dal menu Sottotitoli.
Per riprodurre il file multimediale generato in Shaka Player: completa i seguenti passaggi:
- Rendi pubblicamente leggibile il bucket Cloud Storage che hai creato.
- Per abilitare la condivisione delle risorse tra origini (CORS) su un bucket Cloud Storage, segui questi passaggi:
- Crea un file JSON contenente quanto segue:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
Esegui questo comando dopo aver sostituito JSON_FILE_NAME con
il nome del file JSON che hai creato nel passaggio precedente:
gcloud storage buckets update gs://STORAGE_BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Crea un file JSON contenente quanto segue:
- Scegli uno dei file MP4 o manifest generati dal job di transcodifica nel bucket Cloud Storage. Fai clic su Copia URL nella colonna Accesso pubblico del file.
- Vai a Shaka Player, uno player per live streaming online.
- Fai clic su Custom Content (Contenuti personalizzati) nella barra di navigazione in alto.
- Fai clic sul pulsante +.
Incolla l'URL pubblico del file nella casella Manifest URL (URL del manifest).
Digita un nome nella casella Name (Nome).
Fai clic su Save (Salva).
Fai clic su Play (Riproduci).
Seleziona il pulsante dei puntini di sospensione in basso a destra del player e abilita sottotitoli codificati.
Esempio
Puoi utilizzare i seguenti file per un job di prova:
- Video di input di esempio
- Esempio di file di sottotitoli di input per i sottotitoli codificati
- Esempio di file di sottotitoli di input per i sottotitoli in inglese
- Esempio di file di sottotitoli di input per i sottotitoli in spagnolo
Il file dei sottotitoli di input non deve contenere righe vuote tra le righe di testo.