Halaman ini menjelaskan cara menambahkan teks tertutup dan subtitel ke video output.
Teks tertutup (atau hanya teks) adalah tampilan visual audio dalam video. Subtitel tertutup biasanya dalam bahasa yang sama dengan audio dan menyertakan suara latar belakang dan perubahan pembicara.
Subtitel biasanya digunakan untuk menerjemahkan dialog video ke dalam bahasa yang berbeda. Subtitel biasanya tidak menyertakan suara latar belakang dan perubahan pembicara.
Halaman ini menggunakan istilah file teks input untuk merujuk pada file teks yang berisi teks tertutup atau subtitel. Anda memberikan file ini sebagai input ke tugas.
Menambahkan teks dan subtitel ke konfigurasi tugas
Lihat input dan output yang didukung untuk format file teks input yang didukung. Contoh file video dan contoh file teks input disediakan untuk Anda menguji konfigurasi.
Gunakan informasi di bagian berikut untuk menambahkan teks dan subtitel ke konfigurasi tugas. Halaman ini mengasumsikan bahwa Anda telah memahami JobConfig dasar. Untuk informasi selengkapnya tentang cara membuat tugas transcoding, lihat Membuat dan mengelola tugas.
Menambahkan teks
Untuk membuat tugas yang menyematkan teks dalam penampung file video output, lakukan hal berikut:
Tambahkan array
inputs
ke awal konfigurasi tugas.Tambahkan objek
Input
ke arrayinputs
yang menentukan kunci dan URI untuk video input terkait.Tambahkan objek
Input
lain yang menyertakan jalur ke file teks input.Tambahkan array
editList
ke konfigurasi tugas. Array ini digunakan untuk menambahkan input ke linimasa video output.Tambahkan objek
EditAtom
ke arrayeditList
. ObjekEditAtom
ini harus mereferensikan kunci untuk video input dan teks yang Anda tambahkan di arrayinputs
. Anda dapat menetapkanstartTimeOffset
danendTimeOffset
untuk memangkas video input.Tambahkan teks ke penampung output dengan menambahkan objek
textStream
ke arrayelementaryStreams
. Hanya satu aliran teks tersemat yang didukung dan ditambahkan ke semua video output (karena hanya ada satu linimasa output).Gunakan array
mapping
dalam objek konfigurasitextStream
untuk mereferensikan kunci objekEditAtom
.
Contoh konfigurasi berikut menyematkan teks tertutup CEA-608 dalam video.
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
: Google Cloud Project ID Anda yang tercantum di Setelan IAM.LOCATION
: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.Menampilkan lokasius-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO
: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/my-vid.mp4
).STORAGE_CAPTIONS_FILE
: Nama file teks di bucket Cloud Storage Anda, seperticaptions.srt
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/captions.srt
).STORAGE_OUTPUT_FOLDER
: Nama folder output di bucket 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
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
LOCATION
: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.Menampilkan lokasius-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO
: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/my-vid.mp4
).STORAGE_CAPTIONS_FILE
: Nama file teks di bucket Cloud Storage Anda, seperticaptions.srt
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/captions.srt
).STORAGE_OUTPUT_FOLDER
: Nama folder output di bucket Cloud Storage tempat Anda ingin menyimpan output video yang dienkode.
Simpan konten berikut ini dalam file yang bernama request.json
:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" }, { "key": "caption_input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_CAPTIONS_FILE" } ], "editList": [ { "key": "atom0", "inputs": [ "input0", "caption_input0" ] } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } }, { "key": "cea-stream0", "textStream": { "codec": "cea608", "mapping": [ { "atomKey": "atom0", "inputKey": "caption_input0", "inputTrack": 0 } ], "languageCode": "en-US", "displayName": "English" } } ], "muxStreams": [ { "key": "sd-hls", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "sd-dash", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "audio-dash", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "sd-hls" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "sd-dash", "audio-dash" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (PowerShell)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (cmd.exe)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Anda akan melihat respons seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui 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 mengetahui 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 mengetahui 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.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui 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.
Menambahkan subtitel
Untuk membuat tugas yang menghasilkan file subtitel multibahasa yang diputar dari manifes, lakukan hal berikut:
Tambahkan array
inputs
ke konfigurasi tugas.Tambahkan objek
Input
ke arrayinputs
yang menentukan kunci dan URI untuk video input terkait.Tambahkan objek
Input
lain yang menentukan URI untuk file teks input.Tambahkan array
editList
ke konfigurasi. Array ini digunakan untuk menambahkan input ke linimasa video output.Tambahkan objek
EditAtom
ke arrayeditList
yang mereferensikan objek dalam arrayinputs
berdasarkan kunci. Anda dapat menetapkanstartTimeOffset
danendTimeOffset
untuk memangkas video input.Tambahkan teks ke penampung output dengan menambahkan objek
textStream
ke arrayelementaryStreams
.Untuk file teks mandiri, tentukan penampung dalam array
muxStream
; lihat objek dengan kuncitext-vtt-en
dantext-vtt-es
dalam konfigurasi berikut. Untuk teks tersemat, Anda hanya memerlukan streaming dasar.
Konfigurasi berikut menghasilkan beberapa file WebVTT, satu untuk subtitel bahasa Inggris dan satu untuk subtitel bahasa Spanyol. Subtitel DASH dalam file WebVTT dibuat dalam format penampung fMP4.
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
: Google Cloud Project ID Anda yang tercantum di Setelan IAM.LOCATION
: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.Menampilkan lokasius-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO
: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/my-vid.mp4
).STORAGE_SUBTITLES_FILE1
: Nama file subtitel di bucket Cloud Storage Anda, sepertisubtitles-en.srt
untuk subtitel berbahasa Inggris. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: Nama file subtitel lain di bucket Cloud Storage Anda, sepertisubtitles-es.srt
untuk subtitel berbahasa Spanyol. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/subtitles-es.srt
).STORAGE_OUTPUT_FOLDER
: Nama folder output di bucket 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
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
LOCATION
: Lokasi tempat tugas Anda akan dijalankan. Gunakan salah satu region yang didukung.Menampilkan lokasius-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Nama bucket Cloud Storage yang Anda buat.STORAGE_INPUT_VIDEO
: Nama video di bucket Cloud Storage yang Anda transkode, sepertimy-vid.mp4
. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/my-vid.mp4
).STORAGE_SUBTITLES_FILE1
: Nama file subtitel di bucket Cloud Storage Anda, sepertisubtitles-en.srt
untuk subtitel berbahasa Inggris. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: Nama file subtitel lain di bucket Cloud Storage Anda, sepertisubtitles-es.srt
untuk subtitel berbahasa Spanyol. Kolom ini harus memperhitungkan folder apa pun yang Anda buat di bucket (misalnya,input/subtitles-es.srt
).STORAGE_OUTPUT_FOLDER
: Nama folder output di bucket Cloud Storage tempat Anda ingin menyimpan output video yang dienkode.
Simpan konten berikut ini dalam file yang bernama request.json
:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" }, { "key": "subtitle_input_en", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_SUBTITLES_FILE1" }, { "key": "subtitle_input_es", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_SUBTITLES_FILE2" } ], "editList": [ { "key": "atom0", "inputs": [ "input0", "subtitle_input_en", "subtitle_input_es" ] } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } }, { "key": "vtt-stream-en", "textStream": { "codec": "webvtt", "languageCode": "en-US", "displayName": "English", "mapping": [ { "atomKey": "atom0", "inputKey": "subtitle_input_en" } ] } }, { "key": "vtt-stream-es", "textStream": { "codec": "webvtt", "languageCode": "es-ES", "displayName": "Spanish", "mapping": [ { "atomKey": "atom0", "inputKey": "subtitle_input_es" } ] } } ], "muxStreams": [ { "key": "sd-hls-fmp4", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "audio-hls-fmp4", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] }, { "key": "text-vtt-en", "container": "vtt", "elementaryStreams": [ "vtt-stream-en" ], "segmentSettings": { "segmentDuration": "6s", "individualSegments": true } }, { "key": "text-vtt-es", "container": "vtt", "elementaryStreams": [ "vtt-stream-es" ], "segmentSettings": { "segmentDuration": "6s", "individualSegments": true } } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "sd-hls-fmp4", "audio-hls-fmp4", "text-vtt-en", "text-vtt-es" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (PowerShell)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Windows (cmd.exe)
gcloud transcoder jobs create --location=LOCATION --file=request.json
Anda akan melihat respons seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui 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 mengetahui 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 mengetahui 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.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Transcoder API menggunakan library klien. Untuk mengetahui 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.
Memutar video
Untuk melihat teks atau subtitel di Windows, putar video di aplikasi Film & TV. Pastikan untuk memilih trek subtitel.
Untuk melihat teks atau subtitel di MacOS atau Linux, Anda dapat memutar video di Shaka Player. Pastikan untuk mengaktifkan teks atau subtitel dari menu Teks.
Untuk memutar file media yang dihasilkan di Shaka Player, selesaikan langkah-langkah berikut:
- Buat bucket Cloud Storage yang Anda buat dapat dibaca secara publik.
- Untuk mengaktifkan cross-origin resource
sharing (CORS) di bucket Cloud Storage, lakukan tindakan berikut:
- Buat file JSON yang berisi hal berikut:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
Jalankan perintah berikut setelah mengganti JSON_FILE_NAME dengan nama file JSON yang Anda buat di langkah sebelumnya:
gcloud storage buckets update gs://STORAGE_BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Buat file JSON yang berisi hal berikut:
- Pilih salah satu file MP4 atau manifes yang dihasilkan oleh tugas transcoding di bucket Cloud Storage. Klik Copy URL di kolom Public access file.
- Buka Shaka Player, pemutar live stream online.
- Klik Konten Kustom di menu navigasi atas.
- Klik tombol +.
Tempel URL publik file ke kotak Manifest URL.
Ketik nama di kotak Name.
Klik Save.
Klik Putar.
Pilih tombol elipsis di kanan bawah pemutar dan aktifkan subtitel.
Contoh
Anda dapat menggunakan file berikut untuk tugas pengujian:
- Contoh video input
- Contoh file teks input untuk teks tertutup
- Contoh file teks input untuk subtitel bahasa Inggris
- Contoh file teks input untuk subtitel bahasa Spanyol
File teks input tidak boleh berisi baris kosong di antara baris teks.