Transcoder API memungkinkan Anda menyambungkan video, mencampur trek audio, dan
lainnya. Spesifikasi JobConfig
JSON
sangat fleksibel, dan ini dapat menciptakan ambiguitas antara input
dan output. Anda dapat menentukan pemetaan {i>stream<i} tertentu untuk mengatasi ambiguitas ini.
Jika tidak, API akan memberikan pemetaan aliran data 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
di JobConfig
menentukan file yang akan didownload, bukan cara
menggunakannya. Setiap input dipasangkan dengan kunci untuk mengidentifikasinya.
editList
menentukan urutan pengeditan sebagai linimasa untuk file output (atau
manifes) dari tugas transcoding. inputs
pada editList
menentukan input mana
yang akan digunakan di setiap atom.
Untuk mengetahui informasi selengkapnya, baca bagian Konsep di Ringkasan.
Pemetaan video default
Setiap atom dalam editList
harus mereferensikan setidaknya satu input yang berisi
jalur video. Jika beberapa input ditentukan untuk atom dan masing-masing berisi
jalur 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 menggabungkan 5 detik pertama trek video
input0.mp4
dengan trek video input1.mov
selama 10 detik 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 informasi selengkapnya.
Pemetaan audio default
Pemetaan audio berlaku untuk berbagai situasi, terutama saat ada jumlah input audio yang tidak cocok ke output.
Menggabungkan beberapa input
Setiap atom dalam editList
harus mereferensikan setidaknya 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 muncul terlebih dahulu dalam daftar inputs
, input ini tidak berisi
trek 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 hingga n salinan
Jika jumlah saluran dalam trek audio input sama 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
}
]
}
}
]
N ke 1 downmix
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
}
]
}
}
]
1 ke N salinan
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 umumnya digunakan untuk sub judul dan {i>closed captioning<i} (CC).
Setiap atom dalam editList
harus mereferensikan setidaknya satu input yang berisi
jalur teks jika
textStream
ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi trek
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
}
]
}
}
]