Halaman ini menjelaskan cara menggabungkan beberapa video input menjadi satu video output. Anda juga dapat memangkas rentang waktu video input.
Untuk setiap video input, tambahkan
objek Input
ke
array inputs
.
Setiap objek Input
menentukan kunci dan URI untuk video input yang terkait. Anda dapat menambahkan objek
PreprocessingConfig
opsional ke Input
untuk
memangkas, melakukan padding, atau melakukan pra-pemrosesan 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 menentukan startTimeOffset
dan endTimeOffset
untuk memangkas
video input. Kolom ini bersifat opsional. Jika Anda tidak menentukan {i>field<i} ini, seluruh video input akan digunakan.
Konfigurasi berikut menyambungkan 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 template tugas atau menyertakannya dalam konfigurasi tugas ad-hoc:
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: Project ID Google Cloud Anda yang tercantum di Setelan IAM.LOCATION
: Lokasi tempat tugas akan dijalankan. Gunakan salah satu wilayah yang didukung.Tampilkan lokasius-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO1
: Nama video di bucket Cloud Storage yang di-transcoding, sepertimy-vid.mp4
. Kolom ini harus mempertimbangkan folder yang Anda buat di bucket (misalnya,input/my-vid.mp4
). Video ini akan digunakan terlebih dahulu dalam 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 di-transcoding, sepertimy-vid.mp4
. Kolom ini harus mempertimbangkan setiap folder yang Anda buat di bucket (misalnya,input/my-vid.mp4
). Video ini akan digunakan kedua dalam 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.json
yang menentukan kolom lowongan. Lakukan pengganti berikut untuk perintahgcloud
:- LOCATION: Lokasi tempat
tugas akan dijalankan. Gunakan salah satu wilayah yang didukung.
Tampilkan lokasi
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME: Nama bucket Cloud Storage yang Anda buat.
- STORAGE_INPUT_VIDEO1: Nama video di bucket Cloud Storage yang di-transcoding, 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 dalam 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 di-transcoding, seperti
my-vid.mp4
. Kolom ini harus mempertimbangkan setiap folder yang Anda buat di bucket (misalnya,input/my-vid.mp4
). Video ini akan digunakan kedua dalam 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 akan dijalankan. Gunakan salah satu wilayah 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 informasi selengkapnya, lihat Dokumentasi referensi API C# Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Transcoder API menggunakan library klien. Untuk informasi selengkapnya, lihat Dokumentasi referensi API Go Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Transcoder API menggunakan library klien. Untuk informasi selengkapnya, lihat Dokumentasi referensi API Java Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 informasi selengkapnya, lihat Dokumentasi referensi API Node.js Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai Transcoder API menggunakan library klien. Untuk informasi selengkapnya, lihat Dokumentasi referensi API PHP Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Transcoder API menggunakan library klien. Untuk informasi selengkapnya, lihat Dokumentasi referensi API Python Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai Transcoder API menggunakan library klien. Untuk informasi selengkapnya, lihat Dokumentasi referensi API Ruby Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh
Perhatikan video contoh berikut:
Kedua video ini mirip karena terdiri dari tiga bagian:
- Menonton film atau game di perangkat seluler
- Menonton konten yang sama di layar TV
- Tampilkan teks iklan singkat untuk produk
Misalnya, Anda dapat menyambungkan kedua video tersebut sehingga video output menampilkan bagian satu dan dua dari video pertama, lalu bagian dua dan tiga dari video kedua. Anda dapat menyelesaikan penyambungan ini menggunakan offset waktu berikut:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Gunakan kode sebelumnya beserta kedua video ini dan offset waktunya untuk melihat video hasil penuh tindakan.