Transcoder API 可讓您連結影片、混合音軌等。JobConfig
JSON 規格相當靈活,這可能會導致輸入和輸出之間產生模糊不清的情況。您可以定義特定的串流對應,以消除這項模糊不清的情況。如果您未指定,API 會提供合理的預設串流對應。
本頁面會顯示 API 提供的預設串流對應項目,以及用於編碼輸入媒體檔案的進階設定範例。
背景
JobConfig
中的 inputs
清單會指定要下載哪些檔案,而非如何使用這些檔案。每個輸入內容都會搭配一個鍵來識別。
editList
會將編輯序列定義為轉碼工作輸出檔案 (或資訊清單) 的時間軸。editList
中的 inputs
會決定在每個原子中使用的輸入內容。
預設影片對應
editList
中的每個原子都必須參照至少一個包含影片軌的輸入內容。如果為原子定義多個輸入內容,且每個輸入內容都包含影片音軌,系統會使用 inputs
清單中的第一個輸入內容做為影片來源;這是預設對應方式。如果沒有任何輸入內容包含影片軌,工作就會失敗。
以下設定會將影片軌 input0.mp4
的前 5 秒與影片軌 input1.mov
的前 10 秒串連到輸出檔案:
"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"
}
]
詳情請參閱「串連多部輸入影片」。
預設音訊對應
音訊對應可套用於各種情況,最常見的情況是音訊輸入和輸出數量不相符。
串連多個輸入內容
如果已定義 audioStream
,editList
中的每個原子都必須參照至少一個包含音軌的輸入內容。如果為原子定義多個輸入內容,且每個輸入內容都包含音訊音軌,系統會使用 inputs
清單中的第一個輸入內容做為音訊來源;這是預設對應方式。如果沒有任何輸入來源含有音軌,工作就會失敗。
如果用戶端未明確指定對應,Transcoder API 只會為每個定義的 audioStream
產生預設對應。
請考慮下列包含已定義 audioStream
的設定:
"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
}
}
]
Transcoder API 會為音訊輸出產生下列預設對應項目。請注意,audioStream
欄位不會套用至 video_only
輸入內容。雖然這項輸入內容會在 inputs
清單中顯示,但不含音軌。
"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
}
]
}
}
]
到 份副本
如果輸入音訊軌的聲道數量與輸出 audioStream
的聲道數量相符,Transcoder API 會將輸入聲道複製到輸出聲道。
請考慮下列設定,其中包含含有 2 聲道立體聲音訊號的輸入內容,以及定義了 2 個通道的 audioStream
:
"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
}
}
]
Transcoder API 會為音訊輸出產生下列預設對應項目:
"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 至 1 個降混
如果輸入音訊音軌的聲道數量大於輸出 audioStream
的聲道數量,轉碼器 API 會將所有輸入聲道複製到單一輸出聲道。
如果 audioStream
定義了多個輸出管道,系統會複製單一輸出管道,並用於每個輸出管道。舉例來說,如果輸入音訊軌包含 5 個聲道,而 audioStream
定義了 2 個輸出聲道,則這兩個輸出聲道會包含完全相同的音訊,也就是 5 個輸入聲道的混音版本。
請考慮以下設定,其中包含含有雙聲道立體聲音訊的輸入內容,以及定義了含有一個輸出頻道的 audioStream
:
"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
}
}
]
Transcoder API 會為音訊輸出產生下列預設對應項目:
"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 到 N 份
如果輸入音訊軌的聲道數少於輸出 audioStream
的聲道數,Transcoder API 會將第一個輸入聲道複製到每個輸出聲道。
請考慮下列設定,其中包含一個含有單聲道單聲道音訊的輸入內容,以及定義的 audioStream
,其中包含 2 個輸出頻道:
"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
}
}
]
Transcoder API 會為音訊輸出產生下列預設對應項目:
"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
}
]
}
}
]
預設文字對應
文字對應通常用於字幕和隱藏式輔助字幕 (CC)。
如果已定義 textStream
,editList
中的每個原子都必須參照至少一個包含文字軌的輸入內容。如果為原子定義多個輸入內容,且每個輸入內容都包含文字音軌,系統會使用 inputs
清單中的第一個輸入內容做為文字來源;這是預設對應方式。如果沒有任何輸入內容包含文字音軌,工作就會失敗。
"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"
}
}
]
Transcoder API 會為文字輸出產生下列預設對應項目:
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]