Halaman ini menjelaskan cara menggabungkan beberapa video input menjadi satu video output. Anda juga dapat memangkas linimasa video input.
Untuk setiap video input, tambahkan objek
Input ke array
inputs.
Setiap Input objek
menentukan kunci dan URI untuk video input terkait. Anda dapat menambahkan objek opsional
PreprocessingConfig
ke Input untuk
memangkas, menambahkan padding, atau melakukan prapemrosesan lainnya
pada video input. Array inputs
tidak diurutkan; Anda dapat menambahkan video input dalam urutan apa pun.
Untuk menambahkan video input ke linimasa video output, tambahkan objek
EditAtom ke
array editList. Array
editList
diurutkan. Input pertama yang ditetapkan dalam array ini akan digunakan terlebih dahulu dalam video output, input kedua akan digunakan berikutnya, dan seterusnya. Anda mengidentifikasi video input berdasarkan kuncinya.
Anda juga dapat menetapkan startTimeOffset dan endTimeOffset untuk memangkas video input. Kolom ini bersifat opsional. Jika Anda tidak menentukan kolom ini, seluruh video input akan digunakan.
Konfigurasi berikut menggabungkan dua video input menjadi satu video output.
"inputs": [
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2"
}
],
"editList": [
{
"key": "atom1",
"inputs": [
"input1"
],
"startTimeOffset": "START_TIME_OFFSET1s",
"endTimeOffset": "END_TIME_OFFSET1s"
},
{
"key": "atom2",
"inputs": [
"input2"
],
"startTimeOffset": "START_TIME_OFFSET2s",
"endTimeOffset": "END_TIME_OFFSET2s"
}
],
Anda dapat menambahkan konfigurasi ini ke a template tugas atau menyertakannya dalam an konfigurasi tugas ad-hoc:
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID: Google Cloud Project ID Anda yang tercantum di Setelan IAM.LOCATION: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.Tampilkan lokasius-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO1: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4. Kolom ini harus mempertimbangkan folder yang Anda buat di bucket (misalnya,input/my-vid.mp4). Video ini akan digunakan terlebih dahulu di linimasa video output.START_TIME_OFFSET1: Waktu mulai, dalam detik pecahan (misalnya,0.0), relatif terhadap linimasa video input pertama. Gunakan kolom ini untuk memangkas konten dari awal video.END_TIME_OFFSET1: Waktu berakhir, dalam detik pecahan (misalnya,8.1), relatif terhadap linimasa video input pertama. Gunakan kolom ini untuk memangkas konten dari akhir video.STORAGE_INPUT_VIDEO2: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4. Kolom ini harus mempertimbangkan folder yang Anda buat di bucket (misalnya,input/my-vid.mp4). Video ini akan digunakan kedua di linimasa video output.START_TIME_OFFSET2: Waktu mulai, dalam detik pecahan (misalnya,3.5), relatif terhadap linimasa video input kedua. Gunakan kolom ini untuk memangkas konten dari awal video kedua.END_TIME_OFFSET2: Waktu berakhir, dalam detik pecahan (misalnya,15), relatif terhadap linimasa video input kedua. Gunakan kolom ini untuk memangkas konten dari akhir video kedua.STORAGE_OUTPUT_FOLDER: Nama folder Cloud Storage tempat Anda ingin menyimpan output video yang dienkode.
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- Buat file
request.jsonyang menentukan kolom tugas. Lakukan penggantian berikut untukgcloudperintah:- LOCATION: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.
Tampilkan lokasi
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_BUCKET_NAME: Nama bucket Cloud Storage yang Anda buat.
- STORAGE_INPUT_VIDEO1:
Nama video di bucket Cloud Storage yang Anda
transkode, seperti
my-vid.mp4. Kolom ini harus mempertimbangkan folder yang Anda buat di bucket (misalnya,input/my-vid.mp4). Video ini akan digunakan terlebih dahulu di linimasa video output. - START_TIME_OFFSET1: Waktu mulai, dalam detik pecahan (misalnya,
0.0), relatif terhadap linimasa video input pertama. Gunakan kolom ini untuk memangkas konten dari awal video. - END_TIME_OFFSET1: Waktu berakhir, dalam detik pecahan (misalnya,
8.1), relatif terhadap linimasa video input pertama. Gunakan kolom ini untuk memangkas konten dari akhir video. - STORAGE_INPUT_VIDEO2: Nama video di bucket Cloud Storage yang Anda transkode, seperti
my-vid.mp4. Kolom ini harus mempertimbangkan folder yang Anda buat di bucket (misalnya,input/my-vid.mp4). Video ini akan digunakan kedua di linimasa video output. - START_TIME_OFFSET2: Waktu mulai, dalam detik pecahan (misalnya,
3.5), relatif terhadap linimasa video input kedua. Gunakan kolom ini untuk memangkas konten dari awal video kedua. - END_TIME_OFFSET2: Waktu berakhir, dalam detik pecahan (misalnya,
15), relatif terhadap linimasa video input kedua. Gunakan kolom ini untuk memangkas konten dari akhir video kedua. - STORAGE_OUTPUT_FOLDER: Nama folder Cloud Storage tempat Anda ingin menyimpan output video yang dienkode.
{ "config": { "inputs": [ { "key": "input1", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1" }, { "key": "input2", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2" } ], "editList": [ { "key": "atom1", "inputs": [ "input1" ], "startTimeOffset": "START_TIME_OFFSET1s", "endTimeOffset": "END_TIME_OFFSET1s" }, { "key": "atom2", "inputs": [ "input2" ], "startTimeOffset": "START_TIME_OFFSET2s", "endTimeOffset": "END_TIME_OFFSET2s" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
- LOCATION: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.
- Jalankan perintah berikut:
Anda akan melihat respons seperti berikut:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Transcoder API C# API dokumentasi referensi.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Transcoder API Go API.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Transcoder API Java API.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Transcoder API Node.js API dokumentasi referensi.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Transcoder API PHP API.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Transcoder API Python API.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Transcoder API Ruby API.
Untuk mengautentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh
Perhatikan contoh video berikut:
Kedua video ini serupa karena berisi tiga bagian:
- Menonton film atau game di perangkat seluler
- Menonton konten yang sama di layar besar
- Menampilkan teks iklan singkat untuk produk
Sebagai contoh, Anda dapat menggabungkan kedua video ini sehingga video output menampilkan bagian satu dan dua dari video pertama, lalu bagian dua dan tiga dari video kedua. Anda dapat melakukan penggabungan ini menggunakan offset waktu berikut:
- ForBiggerEscapes.mp4
startTimeOffset:0sendTimeOffset:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset:3.5sendTimeOffset:15s
Gunakan kode sebelumnya bersama dengan dua video ini dan offset waktunya untuk melihat video hasil yang penuh aksi.