L'API Transcoder ti consente di concatenare video, mixare tracce audio e altro ancora. Il file JSON di JobConfig
è molto flessibile e questo può creare ambiguità tra gli input
e output. Puoi definire determinate mappature di stream per chiarire questa ambiguità.
In caso contrario, l'API fornisce automaticamente mappature dei flussi predefinite ragionevoli.
Questa pagina mostra le mappature dei flussi predefinite fornite dall'API e alcune esempi di configurazione avanzata per la codifica dei file multimediali di input.
Sfondo
L'elenco inputs
in un JobConfig
specifica quali file scaricare, non le istruzioni
per utilizzarli. Ogni input è associato a una chiave per identificarlo.
editList
definisce una sequenza di modifiche come sequenza temporale per il file di output (o il manifest) di un job di transcodifica. Il inputs
in editList
determina quali input utilizzare in ogni atomo.
Per ulteriori informazioni, leggi il Concetti in Panoramica.
Mappatura video predefinita
Ogni atomo in editList
deve fare riferimento ad almeno un input contenente una traccia video. Se per un atomo sono definiti più input e ognuno contiene una traccia video, il primo input nell'elenco inputs
viene utilizzato come sorgente video. Si tratta della mappatura predefinita. Se nessuno degli input contiene una traccia video, il parametro
non va a buon fine.
La seguente configurazione concatena i primi 5 secondi della traccia video
input0.mp4
con 10 secondi della traccia video input1.mov
nel file di output:
"inputs": [
{
"key": "input0",
"uri": "gs://my-bucket/input0.mp4"
},
{
"key": "input1",
"uri": "gs://my-bucket/input1.mov"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["input0"],
"endTimeOffset": "5s",
"startTimeOffset": "0s"
},
{
"key": "atom1",
"inputs": ["input1"],
"endTimeOffset": "20s",
"startTimeOffset": "10s"
}
]
Consulta: Concatenare più video in input per ulteriori informazioni.
Mappature audio predefinite
Le mappature audio si applicano a una varietà di situazioni, in particolare quando c'è un un numero non corrispondente di ingressi audio alle uscite.
Concatenare più input
Ogni atomo in editList
deve fare riferimento ad almeno un input che contiene un
traccia audio se è definito audioStream
. Se vengono definiti più input per
un atomo e ognuno contiene una traccia audio, il primo input nell'elenco inputs
viene utilizzata come sorgente audio; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia audio, il job non va a buon fine.
L'API Transcoder genera solo una mappatura predefinita per ogni
audioStream
se il mapping non è specificato esplicitamente dal client.
Considera la seguente configurazione che contiene un audioStream
definito:
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
},
{
"key": "video_only",
"uri": "gs://my-bucket/video_only.mov"
},
{
"key": "stereo_audio_only",
"uri": "gs://my-bucket/stereo_audio_only.mp3"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
},
{
"key": "atom1",
"inputs": ["video_only", "stereo_audio_only"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
L'API Transcoder genera le seguenti mappature predefinite per l'output audio.
Tieni presente che i campi audioStream
non vengono applicati all'input video_only
.
Sebbene questo input venga visualizzato per primo nell'elenco inputs
, non contiene un
traccia audio.
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
},
{
"atomKey": "atom1",
"inputKey": "stereo_audio_only",
"inputTrack": 0,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom1",
"inputKey": "stereo_audio_only",
"inputTrack": 0,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
N a n copie
Se il numero di canali nella traccia audio di input corrisponde al numero di canali in audioStream
output, l'API Transcoder copia i canali di input nei canali di output.
Considera la seguente configurazione che contiene un ingresso a due canali
audio stereo e un elemento audioStream
definito con 2 canali:
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
L'API Transcoder genera le seguenti mappature predefinite per l'output audio:
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
Da N a 1 downmix
Se il numero di canali nella traccia audio di ingresso è maggiore del numero di
canali nell'output audioStream
, l'API Transcoder copia tutti gli input
in un unico canale di uscita.
Se audioStream
definisce più canali di uscita, il singolo canale di uscita
viene copiato e utilizzato per ciascun canale di output. Ad esempio, se la traccia audio di input è composta da 5 canali e audioStream
definisce 2 canali di output, questi due canali di output conterranno lo stesso audio, un downmix dei 5 canali di input.
Prendiamo in considerazione la seguente configurazione che contiene un input con audio stereo a due canali e un audioStream
definito con un canale di output:
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 1,
"channelLayout": ["fc"],
"sampleRateHertz": 48000
}
}
]
L'API Transcoder genera le seguenti mappature predefinite per l'output audio:
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 1,
"channelLayout": ["fc"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 0,
"gainDb": 0
}
]
}
}
]
Copia da 1 a N
Se il numero di canali nella traccia audio di ingresso è inferiore al numero di
canali nell'output audioStream
, l'API Transcoder copia il primo
canale di ingresso in ciascun canale di output.
Prendiamo in considerazione la seguente configurazione che contiene un input con audio mono a un canale e un audioStream
definito con 2 canali di output:
"inputs": [
{
"key": "video_and_mono_audio",
"uri": "gs://my-bucket/video_and_mono_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_mono_audio"]
}
],
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
L'API Transcoder genera le seguenti mappature predefinite per l'output audio:
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_mono_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_mono_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
Mappatura del testo predefinita
Le mappature di testo vengono generalmente utilizzate per i sottotitoli e i sottotitoli codificati.
Ogni atomo in editList
deve fare riferimento ad almeno un input contenente una traccia di testo se è definito un textStream
. Se per un atomo sono definiti più input e ognuno contiene una traccia di testo, il primo input nell'elenco inputs
viene utilizzato come origine del testo. Si tratta della mappatura predefinita. Se nessuno degli input contiene una traccia di testo, il job non va a buon fine.
"inputs": [
{
"key": "video_and_audio",
"uri": "gs://my-bucket/video_and_audio.mp4"
},
{
"key": "sub",
"uri": "gs://my-bucket/sub.srt"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_audio", "sub"]
}
],
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt"
}
}
]
L'API Transcoder genera le seguenti mappature predefinite per l'output di testo:
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]