L'API Transcoder consente di concatenare video, combinare tracce audio e altro ancora. La specifica JSON di JobConfig
è estremamente flessibile e questo può creare ambiguità tra input e output. Per definire questa ambiguità puoi definire determinate mappature dei flussi.
In caso contrario, l'API fornisce mappature degli stream predefinite ragionevoli per te.
Questa pagina mostra le mappature di flussi predefinite fornite dall'API e alcuni esempi di configurazione avanzata per la codifica dei file multimediali di input.
Premesse
L'elenco inputs
in JobConfig
specifica quali file scaricare, non come
utilizzarli. Ogni input è associato a una chiave di identificazione.
editList
definisce una sequenza di modifiche come una sequenza temporale per il file di output (o manifest) da un job di transcodifica. inputs
in editList
determina gli input da utilizzare in ogni atomo.
Per ulteriori informazioni, leggi la sezione Concetti nella panoramica.
Mappatura video predefinita
Ogni atom in editList
deve fare riferimento ad almeno un input che contenga una traccia video. Se sono definiti più input per un atom e ciascuno contiene una traccia video, il primo input nell'elenco inputs
viene utilizzato come origine video; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia video, il job non riesce.
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"
}
]
Per ulteriori informazioni, consulta la sezione Concatenazione di più video inseriti.
Mappature audio predefinite
Le mappature audio si applicano a una serie di situazioni, in particolare quando è presente un numero non corrispondente di ingressi audio per le uscite.
Concatena più input
Ogni atom in editList
deve fare riferimento ad almeno un input che contiene una traccia audio se viene definito un audioStream
. Se sono definiti più ingressi per un atom e ciascuno contiene una traccia audio, il primo input nell'elenco inputs
viene utilizzato come sorgente audio; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia audio, il job non riesce.
L'API Transcoder genera una mappatura predefinita solo per ogni mappatura audioStream
definita, se non viene specificata in modo esplicito dal client.
Considera la seguente configurazione che contiene un elemento 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
.
Anche se questo input compare per primo nell'elenco inputs
, non contiene una 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
}
]
}
}
]
Copia da N a N
Se il numero di canali nella traccia audio di input corrisponde al numero di canali nell'output audioStream
, l'API Transcoder copia i canali di input nei canali di output.
Considera la seguente configurazione che contiene un input con audio stereo a due canali e un 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 input è maggiore del numero di canali nell'output audioStream
, l'API Transcoder copia tutti i canali di input in un unico canale di output.
Se audioStream
definisce più canali di output, viene copiato e utilizzato per un singolo canale di output. Ad esempio, se la traccia audio di input è composta da 5 canali e audioStream
definisce 2 canali di uscita, questi 2 canali di uscita conterranno esattamente lo stesso audio, ovvero un downmix dei 5 canali di ingresso.
Considera 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 input è inferiore al numero di canali nell'output audioStream
, l'API Transcoder copia il primo canale di input in ogni canale di output.
Considera la seguente configurazione che contiene un input con audio mono monocanale 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
In genere, le mappature di testo vengono utilizzate per i sottotitoli.
Ogni atom in editList
deve fare riferimento ad almeno un input che contiene una traccia di testo se un textStream
è definito. Se sono definiti più input per un atom e ciascuno contiene una traccia di testo, il primo input nell'elenco inputs
viene utilizzato come origine del testo; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia di testo, il job non riesce.
"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
}
]
}
}
]