Video & subtitle · Perangkat Subtitle
Perbandingan kode waktu subtitle: SRT koma, VTT titik, dan SMPTE bingkai
· Latar belakang
subtitle kode waktu kecepatan bingkai
Tiga cara penulisan waktu muncul dalam karya teks: HH:MM:SS,mmm dari SRT, HH:MM:MM:SS.mmm dari WebVTT, dan HH:MM:SS:FF dari SMPTE. Posting ini menjelaskan apa artinya masing-masing, bagaimana konversinya, dan di mana kesalahan konversi.
Momen yang sama ditulis dalam tiga cara - tur singkat tentang kode waktu yang ditemui editor dalam satu proyek
Satu proyek dapat memberikan editor tulisan instan yang sama dengan tiga cara. File subtitle menggunakan jam, menit, detik dan koma sebelum milidetik. File teks web menggunakan titik pada posisi yang sama. Daftar keputusan edit menggunakan nomor bingkai, bukan pecahan. Ketiganya menyebutkan momen yang sama, dan hanya satu yang bisa dibaca tanpa mengetahui apa pun tentang materinya.
Poin terakhir itulah yang penting. Dua dari notasi ini bersifat absolut dan satu lagi tidak, dan konversi di antara keduanya akan gagal secara spesifik jika perbedaannya diabaikan.
Milidetik dengan koma: SRT — kebiasaan desimal Eropa yang menjadi aturan format
SRT menulis jam, menit, detik, koma, dan tepat tiga digit milidetik. Koma adalah pemisah desimal dalam konvensi Eropa, dan menjadi aturan format berdasarkan penggunaan, bukan berdasarkan spesifikasi, karena SubRip tidak memiliki dokumen standar untuk memperbaikinya. Nilainya tidak bersifat Eropa; hanya tanda bacanya saja.
Pengurai di sini membaca milidetik dengan menambahkan angka apa pun yang ditemukan di sebelah kanan menjadi tiga, sehingga stempel waktu yang diakhiri dengan satu digit dibaca sebagai ratusan milidetik, bukan satuan. Hal ini penting karena file yang ditulis dengan tangan atau dengan konverter longgar tidak selalu menyediakan tiga digit, dan membaca satu digit tambahan sebagai satuan akan menempatkan isyarat hampir satu detik lebih awal.
Milidetik dengan titik: WebVTT — nilai yang sama, pemisah berbeda, dan mengapa hal ini penting bagi parser
WebVTT menulis nilai yang sama dengan sebuah titik, dan mengizinkan kolom jam dihilangkan seluruhnya, sehingga formulir dua kolom valid jika SRT mengharapkan tiga. Bagi parser, ini adalah tata bahasa yang benar-benar berbeda, itulah sebabnya sebuah file dapat ditolak karena tanda bacanya saja meskipun setiap angka di dalamnya benar.
File asli terus-menerus mencampurkan keduanya, sehingga parser menerima salah satu pemisah, apa pun format file yang diklaim. Toleransi itu hanya pada masukan saja. Pada keluaran, pemisah dipilih berdasarkan format target, koma untuk SRT dan titik untuk WebVTT, sehingga file yang dikonversi bersifat kanonik dan bukan salinan ketidakteraturan apa pun yang muncul.
Bingkai: SMPTE kode waktu — HH:MM:SS:FF, ketergantungannya pada kecepatan bingkai dan komplikasi drop-frame
SMPTE kode waktu menggantikan bagian pecahan dengan nomor bingkai, memberikan jam, menit, detik, dan bingkai. Berbeda dengan dua lainnya, hal ini tidak dapat ditafsirkan sendiri: frame dua belas adalah instan yang berbeda pada dua puluh lima frame per detik dibandingkan pada tiga puluh, sehingga kode waktu berbasis frame tanpa kecepatan yang dinyatakan tidak lengkap dan bukan sekadar ambigu.
Drop-frame menambahkan komplikasi kedua. Materi pada 29.97 frame per detik dihitung seolah-olah ada tiga puluh, dan agar penghitungan tetap selaras dengan jam, dua nomor frame dilewati pada awal sebagian besar menit, dengan setiap menit kesepuluh dikecualikan. Bingkai tidak terjatuh; hanya labelnya saja. Kode waktu drop-frame adalah konvensi penghitungan, dan memperlakukannya sebagai jumlah frame biasa menghasilkan kesalahan yang berkembang di seluruh program.
Mengubah bingkai menjadi milidetik — aritmatika dan pembulatan yang menghasilkan kesalahan kecil namun nyata
Mengonversi frame menjadi milidetik adalah pembagian dengan kecepatan frame, dan pembulatan adalah tempat masuknya kesalahan kecil. Indeks bingkai dibagi dengan kecepatan dan dikalikan seribu jarang menghasilkan satu milidetik penuh, dan hasilnya harus dibulatkan agar dapat disimpan. Isyarat internal disimpan dalam milidetik penuh yang dihitung dari nol, sehingga setiap konversi ke dalam representasi tersebut dibulatkan satu kali.
Satu putaran tidak berbahaya. Kesalahan yang harus diperhatikan adalah konversi berulang: file yang diambil dari bingkai ke milidetik, kembali ke bingkai dengan kecepatan berbeda dan meneruskannya lagi mengumpulkan pembulatan setiap kali, dan kesalahan tersebut tidak dibatalkan. Konversikan sekali dari sumber resmi daripada meneruskan file melalui beberapa alat.
Contoh praktis: satu isyarat pada 25 fps dan pada 29.97 drop-frame — mengonversi keduanya menjadi milidetik dan membandingkan
Ambil satu isyarat pada satu menit tiga puluh detik dan dua belas frame. Pada dua puluh lima frame per detik, dua belas frame sama dengan dua belas dua puluh lima detik, yaitu empat ratus delapan puluh milidetik, jadi waktu instannya adalah sembilan puluh ribu empat ratus delapan puluh milidetik.
Pada drop-frame 29.97, label yang sama adalah instan yang berbeda. Hitung frame: sembilan puluh detik pada nominal tiga puluh menghasilkan dua ribu tujuh ratus, ditambah dua belas, dikurangi dua label yang dijatuhkan pada menit pertama, yaitu dua ribu tujuh ratus sepuluh frame. Bagilah dengan kecepatan sebenarnya tiga puluh ribu per seribu satu dan waktu instannya adalah sekitar sembilan puluh ribu empat ratus dua puluh empat milidetik. Kedua kode waktu tersebut terlihat hampir identik dan berbeda sekitar lima puluh enam milidetik, yang cukup kecil untuk bertahan dalam peninjauan dan cukup besar untuk terlihat dalam waktu dekat.
Yang tidak tercakup dalam hal ini — jam setelah 99, waktu negatif dan kode waktu dalam metadata penampung
Ini mencakup notasi kode waktu yang dibawa oleh file subtitle. Ini tidak mencakup bidang jam lebih dari sembilan puluh sembilan, yang digunakan beberapa sistem untuk identifikasi gulungan daripada waktu yang telah berlalu, dan tidak mencakup waktu negatif, yang tidak dapat diungkapkan oleh format subtitle; pergeseran yang akan menghasilkan satu dijepit di nol.
Kode waktu yang disimpan dalam metadata kontainer juga berada di luar cakupan. File video dapat membawa kode waktu mulai yang mengimbangi semua yang ada di dalamnya, sehingga file subtitle yang sesuai dengan program dapat terlihat salah pada file tersebut, dan pemeriksaan cap waktu subtitle tidak akan mengungkapkan hal itu.
Kesimpulan: ketahui jam mana yang sedang Anda baca — bagaimana Perangkat Subtitle mengkonversi antara SRT dan kode waktu WebVTT dengan tepat
Ketahui jam mana yang sedang Anda baca. Koma dan titik adalah nilai yang sama yang ditulis untuk parser yang berbeda, dan konversi di antara keduanya akan mengubah tanda baca dan tidak ada yang lain. Jumlah frame adalah jenis angka yang berbeda, tidak ada artinya tanpa rate-nya dan menyesatkan jika rate-nya adalah drop-frame.
Konversi antara SRT dan WebVTT dengan toolkit dan bandingkan stempel waktu sebelum dan sesudah: pemisah harus berubah dan angka tidak boleh berubah. Jika suatu nomor dipindahkan, file tersebut melewati langkah berbasis bingkai di suatu tempat, dan itulah konversi yang akan diperiksa.