Mit der Transcoder API können Sie Videos verketten, Audiotracks mischen und mehr. Die JSON-Spezifikation JobConfig
ist sehr flexibel. Dies kann zu Mehrdeutigkeit zwischen Ein- und Ausgaben führen. Sie können bestimmte Streamzuordnungen definieren, um diese Mehrdeutigkeit zu beseitigen.
Wenn Sie das nicht tun, stellt die API angemessene Standard-Streamzuordnungen bereit.
Auf dieser Seite werden die Standardstreamzuordnungen der API angezeigt sowie einige erweiterte Konfigurationsbeispiele für die Codierung von Eingabemediendateien.
Hintergrund
Die inputs
-Liste in einer JobConfig
gibt an, welche Dateien heruntergeladen werden, nicht wie sie verwendet werden sollen. Jede Eingabe wird mit einem Schlüssel identifiziert, um sie zu identifizieren.
editList
definiert eine Sequenz von Änderungen als Zeitachse für die Ausgabedatei (oder das Manifest) eines Transcodierungsjobs. Die inputs
in der editList
legen fest, welche Eingaben in jedem Atom verwendet werden.
Weitere Informationen finden Sie im Abschnitt Konzepte in der Übersicht.
Standard-Videozuordnung
Jedes Atom in der editList
muss auf mindestens eine Eingabe verweisen, die einen Videotrack enthält. Wenn für ein Atom mehrere Eingaben definiert sind und jede einen Video-Track enthält, wird die erste Eingabe in der inputs
-Liste als Videoquelle verwendet. Dies ist die Standardzuordnung. Wenn keine der Eingaben einen Videotrack enthält, schlägt der Job fehl.
Die folgende Konfiguration verkettet die ersten 5 Sekunden des Videotracks input0.mp4
mit 10 Sekunden des Videotracks input1.mov
in der Ausgabedatei:
"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"
}
]
Weitere Informationen finden Sie unter Mehrere Eingabevideos zusammenführen.
Standard-Audiozuordnungen
Audiozuordnungen beziehen sich auf eine Vielzahl von Situationen, vor allem, wenn eine falsch zugeordnete Anzahl von Audioeingaben für die Ausgaben ausgegeben wird.
Mehrere Eingaben verketten
Jedes Atom in editList
muss auf mindestens eine Eingabe verweisen, die einen Audiotrack enthält, wenn ein audioStream
definiert ist. Wenn für ein Atom mehrere Eingaben definiert sind und jede einen Audiotrack enthält, wird die erste Eingabe in der inputs
-Liste als Audioquelle verwendet. Dies ist die Standardzuordnung. Wenn keine der Eingaben einen Audiotrack enthält, schlägt der Job fehl.
Die Transcoder API generiert nur für jedes definierte audioStream
-Element eine Standardzuordnung, wenn die Zuordnung vom Client nicht explizit angegeben wurde.
Betrachten Sie die folgende Konfiguration, die eine definierte audioStream
enthält:
"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
}
}
]
Die Transcoder API generiert die folgenden Standardzuordnungen für die Audioausgabe.
Die audioStream
-Felder werden nicht auf die video_only
-Eingabe angewendet.
Obwohl diese Eingabe zuerst in der inputs
-Liste aufgeführt wird, enthält sie keinen Audiotrack.
"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 bis n Kopie
Wenn die Anzahl der Kanäle im Eingabeaudiotrack mit der Anzahl der Kanäle im Ausgabe-audioStream
übereinstimmt, kopiert die Transcoder API die Eingabekanäle in die Ausgabekanäle.
Betrachten Sie die folgende Konfiguration, die eine Eingabe mit Zweikanal-Stereo-Audio und eine definierte audioStream
mit zwei Kanälen enthält:
"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
}
}
]
Die Transcoder API generiert die folgenden Standardzuordnungen für die Audioausgabe:
"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
}
]
}
}
]
N bis 1 Downmix
Wenn die Anzahl der Kanäle im Eingangs-Audio-Track die Anzahl der Kanäle im Ausgabe-audioStream
überschreitet, kopiert die Transcoder API alle Eingabekanäle in einen einzigen Ausgabekanal.
Wenn durch audioStream
mehrere Ausgabekanäle definiert werden, wird der einzelne Ausgabekanal kopiert und für jeden Ausgabekanal verwendet. Wenn der Eingangs-Audio-Track beispielsweise aus fünf Kanälen besteht und zwei audioStream
-Ausgabekanäle definieren, enthalten diese beiden Ausgabekanäle genau den gleichen Audioinhalt, einen Downmix der fünf Eingabekanäle.
Betrachten Sie die folgende Konfiguration, die eine Eingabe mit Zweikanal-Stereo-Audio und eine definierte audioStream
mit einem Ausgabekanal enthält:
"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
}
}
]
Die Transcoder API generiert die folgenden Standardzuordnungen für die Audioausgabe:
"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
}
]
}
}
]
1 bis N Kopie
Wenn die Anzahl der Kanäle im Eingangs-Audiotrack kleiner ist als die Anzahl der Kanäle im Ausgabe-audioStream
, kopiert die Transcoder API den ersten Eingabekanal in jeden Ausgabekanal.
Die folgende Konfiguration enthält eine Eingabe mit einem Ein-Mono-Audio und eine definierte audioStream
mit zwei Ausgabekanälen:
"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
}
}
]
Die Transcoder API generiert die folgenden Standardzuordnungen für die Audioausgabe:
"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
}
]
}
}
]
Standardtextzuordnung
Textzuordnungen werden im Allgemeinen für Untertitel verwendet.
Jedes Atom in editList
muss auf mindestens eine Eingabe verweisen, die einen Texttrack enthält, wenn ein textStream
definiert ist. Wenn für ein Atom mehrere Eingaben definiert sind und jede einen Texttrack enthält, wird die erste Eingabe in der inputs
-Liste als Textquelle verwendet. Dies ist die Standardzuordnung. Wenn keine der Eingaben einen Texttrack enthält, schlägt der Job fehl.
"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"
}
}
]
Die Transcoder API generiert die folgenden Standardzuordnungen für die Textausgabe:
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]