Transcoder API memungkinkan Anda menyambungkan video, memadukan trek audio, dan
lainnya. Spesifikasi JSON JobConfig
sangat fleksibel, dan hal ini dapat menimbulkan ambiguitas antara input
dan output. Anda dapat menentukan pemetaan aliran data tertentu untuk menghapus ambiguitas ini.
Jika tidak, API akan menyediakan pemetaan streaming default yang wajar untuk Anda.
Halaman ini menampilkan pemetaan streaming default yang disediakan oleh API dan beberapa contoh konfigurasi lanjutan untuk encoding file media input.
Latar belakang
Daftar inputs
dalam JobConfig
menentukan file yang akan didownload, bukan cara
menggunakannya. Setiap input disambungkan dengan kunci untuk mengidentifikasinya.
editList
menentukan urutan pengeditan sebagai linimasa untuk file output (atau
manifes) dari tugas transcoding. inputs
di editList
menentukan input
yang akan digunakan di setiap atom.
Untuk mengetahui informasi selengkapnya, baca bagian Konsep di Ringkasan.
Pemetaan video default
Setiap atom dalam editList
harus mereferensikan minimal satu input yang berisi
jalur video. Jika beberapa input ditentukan untuk atom dan masing-masing berisi
trek video, input pertama dalam daftar inputs
akan digunakan sebagai sumber video;
ini adalah pemetaan default. Jika tidak ada input yang berisi trek video, tugas akan gagal.
Konfigurasi berikut menyambungkan 5 detik pertama trek video
input0.mp4
dengan 10 detik trek video input1.mov
ke dalam file 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"
}
]
Lihat Menggabungkan beberapa video input untuk mengetahui informasi selengkapnya.
Pemetaan audio default
Pemetaan audio berlaku untuk berbagai situasi, terutama jika ada jumlah input audio yang tidak cocok dengan output.
Menggabungkan beberapa input
Setiap atom dalam editList
harus mereferensikan minimal satu input yang berisi
trek audio jika audioStream
ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi trek audio, input pertama dalam daftar inputs
akan digunakan sebagai sumber audio; ini adalah pemetaan default. Jika tidak ada input
yang berisi trek audio, tugas akan gagal.
Transcoder API hanya menghasilkan pemetaan default untuk setiap
audioStream
yang ditentukan jika pemetaan tidak ditentukan secara eksplisit oleh klien.
Pertimbangkan konfigurasi berikut yang berisi audioStream
yang ditentukan:
"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 menghasilkan pemetaan default berikut untuk output audio.
Perhatikan bahwa kolom audioStream
tidak diterapkan ke input video_only
.
Meskipun input ini muncul pertama kali dalam daftar inputs
, input ini tidak berisi
jalur 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
}
]
}
}
]
Salinan N hingga n
Jika jumlah saluran dalam trek audio input cocok dengan jumlah saluran dalam audioStream
output, Transcoder API akan menyalin saluran input ke saluran output.
Pertimbangkan konfigurasi berikut yang berisi input dengan audio stereo
dua saluran dan audioStream
yang ditentukan dengan 2 saluran:
"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 menghasilkan pemetaan default berikut untuk 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
}
]
}
}
]
Downmix N ke 1
Jika jumlah saluran dalam trek audio input lebih besar dari jumlah saluran dalam audioStream
output, Transcoder API akan menyalin semua saluran input ke dalam satu saluran output.
Jika audioStream
menentukan beberapa saluran output, satu saluran output
akan disalin dan digunakan untuk setiap saluran output. Misalnya, jika trek audio input
terdiri dari 5 saluran dan audioStream
menentukan 2 saluran output,
kedua saluran output tersebut akan berisi audio yang sama persis, yaitu downmix dari 5
saluran input.
Pertimbangkan konfigurasi berikut yang berisi input dengan audio stereo
dua saluran dan audioStream
yang ditentukan dengan satu saluran 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
}
}
]
Transcoder API menghasilkan pemetaan default berikut untuk 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
}
]
}
}
]
Salinan 1 hingga N
Jika jumlah saluran dalam trek audio input kurang dari jumlah saluran dalam audioStream
output, Transcoder API akan menyalin saluran input pertama ke setiap saluran output.
Pertimbangkan konfigurasi berikut yang berisi input dengan audio mono
satu saluran dan audioStream
yang ditentukan dengan 2 saluran 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
}
}
]
Transcoder API menghasilkan pemetaan default berikut untuk 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
}
]
}
}
]
Pemetaan teks default
Pemetaan teks biasanya digunakan untuk subtitel dan teks tertutup (CC).
Setiap atom dalam editList
harus mereferensikan minimal satu input yang berisi
jalur teks jika
textStream
ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi jalur
teks, input pertama dalam daftar inputs
akan digunakan sebagai sumber teks; ini adalah
pemetaan default. Jika tidak ada input yang berisi trek teks, tugas akan gagal.
"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 menghasilkan pemetaan default berikut untuk output teks:
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]