Halaman ini menjelaskan cara menambahkan teks tertutup dan subtitel ke video output.
Teks tertutup (atau hanya teks) adalah tampilan visual audio dalam video. Teks tertutup biasanya menggunakan bahasa yang sama dengan audio dan mencakup suara latar belakang dan perubahan pembicara.
Subtitel biasanya digunakan untuk menerjemahkan dialog video ke dalam bahasa lain. Subtitel biasanya tidak menyertakan suara latar dan perubahan pembicara.
Halaman ini menggunakan istilah file teks input untuk merujuk ke 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. File video contoh dan file teks input contoh disediakan agar Anda dapat menguji konfigurasi.
Gunakan informasi di bagian berikut untuk menambahkan teks dan subtitel ke konfigurasi tugas. Halaman ini mengasumsikan bahwa Anda sudah memahami JobConfig dasar. Untuk mengetahui 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 sematan 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.Tampilkan 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
me-west1
me-central1
me-central2
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 mempertimbangkan folder 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 mempertimbangkan folder 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.Tampilkan 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
me-west1
me-central1
me-central2
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 mempertimbangkan folder 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 mempertimbangkan folder 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, 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 API Java Transcoder API.
Untuk melakukan autentikasi 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 dokumentasi referensi API Node.js Transcoder API.
Untuk melakukan autentikasi 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 API Python Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Menambahkan subtitel
Untuk membuat tugas yang menghasilkan file subtitle multi-bahasa 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 tertanam, Anda hanya memerlukan aliran elementer.
Konfigurasi berikut menghasilkan beberapa file WebVTT, satu untuk teks bahasa Inggris dan satu untuk teks 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.Tampilkan 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
me-west1
me-central1
me-central2
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 mempertimbangkan folder 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 mempertimbangkan folder yang Anda buat di bucket (misalnya,input/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: Nama file subtitle lain di bucket Cloud Storage Anda, sepertisubtitles-es.srt
untuk subtitle berbahasa Spanyol. Kolom ini harus mempertimbangkan folder 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.Tampilkan 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
me-west1
me-central1
me-central2
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 mempertimbangkan folder 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 mempertimbangkan folder yang Anda buat di bucket (misalnya,input/subtitles-en.srt
).STORAGE_SUBTITLES_FILE2
: Nama file subtitle lain di bucket Cloud Storage Anda, sepertisubtitles-es.srt
untuk subtitle berbahasa Spanyol. Kolom ini harus mempertimbangkan folder 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, 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 API Java Transcoder API.
Untuk melakukan autentikasi 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 dokumentasi referensi API Node.js Transcoder API.
Untuk melakukan autentikasi 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 API Python Transcoder API.
Untuk melakukan autentikasi ke Transcoder API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Memutar video Anda
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 agar dapat dibaca oleh publik.
- Untuk mengaktifkan berbagi resource lintas asal (CORS) di bucket Cloud Storage, lakukan langkah-langkah 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 pada 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 manifest 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 +.
Tempelkan URL publik file ke kotak URL Manifes.
Ketik nama di kotak Name.
Klik Simpan.
Klik Putar.
Pilih tombol elipsis di kanan bawah pemutar dan aktifkan takarir.
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.