Bulatkan subtitle ke frame
Atau tempel teks subtitle
Opsi
Setiap batas cue digeser ke frame terdekat pada laju ini, jadi pada 25 fps 00:00:02,010 menjadi 00:00:02,000 dan 00:00:02,030 menjadi 00:00:02,040. Batas yang tepat berada di tengah antara dua frame dibulatkan ke atas, jadi 00:00:02,020 menjadi 00:00:02,040. Tidak ada yang diskalakan: timeline mempertahankan panjangnya dan batas-batasnya hanya jatuh pada frame, sehingga panjang setiap cue bisa berubah hingga setengah frame ke kedua arah. Ini bukan frame rate yang dideklarasikan file — ini hanya menentukan di mana batas-batas itu berakhir di keluaran.
Frame rate yang dipakai untuk menghitung waktu. Di halaman format, inilah yang dibutuhkan MicroDVD, karena format itu menyimpan waktu sebagai nomor frame. Di halaman frame rate, ini adalah laju yang dipakai saat file diberi waktu — versi tempat subtitle dibuat — dan kotak kedua di halaman tersebut menerima laju video yang akan Anda gunakan bersama subtitle ini. 23,976, 24, 25, 29,97, 30, 50, 59,94, dan 60 adalah nilai yang umum. Nilai yang salah akan menggeser seluruh timeline, dan di halaman frame rate pergeserannya berupa rasio, bukan jumlah tetap.
Halaman ini memindahkan setiap batas cue ke frame terdekat dari frame rate yang Anda pilih. Ia tidak mengubah kecepatan apa pun: timeline mempertahankan panjangnya, urutan cue tetap seperti semula, dan yang berubah hanya tempat setiap batas berada — 00:00:02,010 pada 25 frame per detik menjadi 00:00:02,000, dan 00:00:02,030 menjadi 00:00:02,040. Panjang setiap cue karena itu bisa berubah sampai setengah frame ke arah mana pun, dan itulah pertukaran yang diambil halaman ini dengan sengaja.
Pekerjaannya adalah mengambil satu keputusan dari pemutar. Subtitle disimpan dalam milidetik, tetapi sebagian besar pemutar dan alat burning bekerja dalam frame, jadi batas yang jatuh di antara dua frame harus dibulatkan oleh siapa pun yang menggambarnya — dan perangkat lunak yang berbeda membulatkannya dengan cara berbeda. Satu pemutar menampilkan baris satu frame lebih awal, yang lain satu frame lebih lambat, dan file yang sama tampak sedikit meleset di dua mesin. Merapatkannya sekali di sini membuat keputusan itu milik Anda dan membuatnya sekali: setelah ini, setiap batas adalah batas frame, dan setiap alat yang membaca file sepakat.
Ini bukan konversi frame rate. Mengubah subtitle dari 23,976 ke 25 mengalikan seluruh timeline dengan rasio agar cue tetap pas dengan video, dan itu halaman lain di kelompok lain. Halaman ini sama sekali mengeluarkan video dari urusan: jika file sudah benar dan Anda hanya ingin batasnya berada di frame, rapatkan; jika file salah terhadap video, rasionya harus diubah lebih dulu.
Dua kotak frame rate muncul karena keduanya menjawab pertanyaan berbeda. Yang satu adalah rate yang dipakai membaca file, yang dibutuhkan format bernomor frame seperti MicroDVD agar bisa dipahami sama sekali. Yang lain adalah rate tujuan perapatan. Pada file yang mendeklarasikan rate-nya sendiri keduanya biasanya angka yang sama, dan menukarnya terjadi diam-diam — outputnya tetap akurat per frame, hanya di grid yang salah. Semuanya berjalan di tab browser ini, tanpa unggah, pada SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON, dan CSV dengan cara yang sama.
Contoh
Setiap batas mendarat di sebuah frame
Masukan
1
00:00:02,020 --> 00:00:04,030
Hello there.
2
00:00:07,010 --> 00:00:09,040
Second line.
Keluaran
1
00:00:02,040 --> 00:00:04,040
Hello there.
2
00:00:07,000 --> 00:00:09,040
Second line.
Pada 25 frame per detik batas-batasnya seharusnya berada di kelipatan 40 ms. 02.020 tepat di tengah antara dua kelipatan itu dan dibulatkan ke atas menjadi 02.040; 04.030 naik ke 04.040; 07.010 turun ke 07.000. Tidak ada yang diskalakan — cue kedua masih sekitar dua detik dan jarak antara keduanya tidak berubah sampai ke frame — tetapi panjang masing-masing cue bergerak sedikit: 2.010 ms dan 2.030 ms keluar sebagai 2.000 ms dan 2.040 ms.
Cue yang lebih pendek dari satu frame
Masukan
1
00:00:04,000 --> 00:00:04,010
Squeezed.
2
00:00:06,010 --> 00:00:08,010
A normal one.
Keluaran
2
00:00:06,000 --> 00:00:08,000
A normal one.
Cue 10 ms memiliki kedua batas yang membulat ke frame 100, jadi perapatan akan meninggalkannya dengan waktu yang sama di kedua ujung — dan cue yang berakhir di tempat ia mulai tidak bisa ditampilkan. Cue itu dibuang dan dihitung alih-alih direnggangkan menjadi satu frame, karena mengarang panjang berarti menaruh subtitle di layar yang tidak pernah diminta file. Pada 25 frame per detik dibutuhkan cue lebih pendek dari 20 ms untuk mencapai kasus ini; cue kedua dua puluh kali lebih panjang dan berperilaku biasa.
Frame rate pecahan tidak bisa membiarkan panjang cue apa adanya
Masukan
1
00:00:01,000 --> 00:00:03,000
Hello there.
Keluaran
1
00:00:01,001 --> 00:00:03,003
Hello there.
23,976 frame per detik bukan bilangan bulat milidetik per frame, jadi tidak ada detik bulat yang merupakan batas frame dan kedua tepinya bergerak: cue yang berjalan tepat 2.000 ms keluar sepanjang 2.002 ms. Setiap batas tetap berada di frame, dan itulah yang dijanjikan halaman ini, tetapi angka bulat yang dipakai menulis sumbernya hilang. Ini perlu dilihat sebelum merapatkan file ke 23,976 atau 29,97 lalu mengharapkan timing-nya kembali tanpa berubah.
Pertanyaan yang sering diajukan
Apa yang dilakukan perapatan ke frame yang tidak dilakukan konversi frame rate?
Konversi mengubah berapa panjang timeline; perapatan hanya mengubah tempat batasnya berada di timeline itu. Mengonversi subtitle dari 24 ke 25 frame per detik mengalikan setiap timestamp dengan 0,96 agar tetap pas dengan video, dan cue yang tadinya dua detik menjadi 1,92 detik. Perapatan membiarkan dua detik itu tetap dua detik dan memindahkan tepinya ke frame terdekat, mengubah masing-masing kurang dari setengah frame.
Apakah perapatan membuat subtitle saya sejajar dengan video yang berjalan pada frame rate berbeda?
Tidak. Halaman ini tidak pernah melihat video dan tidak pernah mengubah panjang timeline, jadi file yang meleset karena video berjalan pada rate berbeda tetap sama jauh melesetnya sesudahnya. Hitung rasionya lebih dulu — itulah gunanya halaman konversi frame rate — lalu rapatkan setelahnya jika alat tujuan Anda membutuhkan batas di frame.
Seberapa besar panjang cue bisa berubah ketika dirapatkan?
Sampai setengah frame di setiap tepi, jadi sampai satu frame secara total, dan tidak pernah lebih. Pada 25 frame per detik itu paling banyak 40 ms pada satu cue, 20 ms per batas. Pada 23,976 atau 29,97 tidak ada bilangan bulat milidetik per frame, jadi bahkan cue yang mulai dan berakhir di nilai bulat ikut bergerak: cue dua detik menjadi 2.002 ms.
Saya menjalankan halaman dua kali dan proses kedua tidak mengubah apa pun. Apakah itu benar?
Ya, dan itulah yang membuat halaman ini aman ditinggal dalam batch. Setelah setiap batas berada di frame, frame terdekat dari sebuah batas adalah batas itu sendiri, jadi proses kedua mengembalikan file byte demi byte. Jika Anda memeriksa penyerahan, itu juga berarti file yang berubah pada proses kedua belum sepenuhnya dirapatkan pada proses pertama — hal itu seharusnya tidak terjadi, tetapi ini uji yang murah.
Bisakah sebuah subtitle hilang ketika dirapatkan?
Hanya jika ia lebih pendek dari setengah frame, dan dalam kasus itu kedua batasnya membulat ke frame yang sama sehingga tidak ada cue tersisa untuk ditulis. Pada 25 frame per detik itu berarti apa pun di bawah 20 ms, yang bukan subtitle nyata; halaman ini menghitung apa yang dibuangnya, jadi laporanlah yang perlu dilihat alih-alih unduhannya.
Haruskah saya merapatkan ke frame rate yang dideklarasikan file itu sendiri?
Jangan otomatis — deklarasinya menyatakan cara membaca nomor frame di file, dan rate perapatan menyatakan ke mana batas-batasnya pergi di output. Keduanya angka yang sama dalam sebagian besar penyerahan. Keduanya berbeda ketika Anda menyiapkan file untuk alat yang bekerja pada rate lain, dan memilih rate deklarasinya di situ adalah kesalahan yang senyap: outputnya tetap akurat per frame, di grid yang tidak diminta siapa pun.