Lompat ke konten utama
SubtitleMatrix

Konversi timecode drop-frame ke non-drop

TimecodeTimecode drop-frame
Atau tempel teks subtitle

Opsi

Non-drop 30 fps dan drop-frame 29,97 menulis jam yang sama secara berbeda, dan kotak ini memilih arah file dibaca dan arah file ditulis kembali. Cue pada satu jam terbaca 01:00:00,000 pada satu konvensi dan 01:00:03,600 pada konvensi lain — selisih keduanya 3,6 detik per jam, bukan kesalahan pembulatan. Judul halaman menyebut satu arah, dan kotak ini hanya menawarkan arah itu, sehingga file yang Anda dapat adalah file yang menjadi pokok halaman. Tidak ada yang berubah pada teksnya: tidak ada cue yang waktunya disesuaikan terhadap video, tidak ada frame rate yang dikonversi, dan cue di dalam menit pertama setiap jam kembali persis seperti saat masuk, karena tidak ada label frame yang dibuang di sana.

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 menulis ulang setiap timecode dalam file subtitle dari drop-frame 29,97 fps kembali menjadi non-drop-frame 30 fps, sehingga setiap jam mundur sebesar jumlah tetap yang tumbuh bersama program: tidak ada di dalam menit pertama sebuah jam, 3,6 detik pada satu jam, 36 detik setelah sepuluh jam. Kata-kata, nomor cue, urutan cue, dan pemisah baris adalah milik file itu sendiri dan keluar tanpa tersentuh.

File yang dituju halaman ini dicap terhadap tampilan atau perangkat yang menghitung dalam drop-frame — hal biasa pada materi 29,97, karena drop-frame adalah konvensi yang tetap sejalan dengan jam dinding — sedangkan semua yang ada di hilirnya membaca jam sebagai non-drop. Dibaca dengan cara itu, setiap timecode dalam file terlalu besar sebesar jumlah yang terus tumbuh, sehingga subtitle muncul terlalu awal, dan semakin lama semakin awal selama program berjalan. Setengah jam kemudian galatnya 1,8 detik, dan ia tidak berhenti tumbuh di bagian mana pun dalam file. Itulah sebabnya perbaikannya bukan pergeseran kecil: ini pelabelan ulang yang sama yang diterapkan pada setiap timestamp, dengan besar koreksi ditentukan oleh posisi cue.

Membaca jam sebagai timecode berarti merapatkannya ke tick frame 30 fps terdekat, dan dalam drop-frame dua tick di antaranya tidak ada. Drop-frame melewati label ;00 dan ;01 di awal setiap menit kecuali setiap menit kesepuluh — ia menghitung 00:00:59;28, 00:00:59;29, lalu melompat ke 00:01:00;02 — sehingga 00:01:00,000 yang masuk menamai instan yang tidak bisa ditulis konvensi itu. Nilai itu ditarik mundur ke label terakhir yang bisa ditulisnya, 00:00:59,933, 67 milidetik lebih awal. Itu batas nyata dari aritmetika, bukan toleransi, dan dinyatakan di halaman ini alih-alih dihaluskan: selama dua jam ada 216 nilai seperti itu.

Cue yang menjadi lebih pendek dari satu frame setelah perapatan tidak bisa ditulis sama sekali, karena kedua tepinya mendarat di tick yang sama dan cue yang waktu akhirnya sama dengan waktu mulainya bukanlah cue. Cue seperti itu dibuang dan dihitung di laporan kehilangan di atas alih-alih direnggangkan diam-diam menjadi satu frame. Dalam praktiknya hal ini hanya menyentuh materi yang dipotong frame demi frame, tetapi halaman ini tidak bergantung pada kelangkaan itu — ia melaporkan jumlahnya, dan file tanpa cue seperti itu tidak melaporkan apa pun.

Tidak ada yang diunggah. File dibaca dan ditulis kembali di dalam tab browser dan tidak pernah meninggalkan mesin, yang penting karena alasan yang sama seperti di setiap halaman lain di sini: materi yang terikat kewajiban kerahasiaan tidak boleh diserahkan ke layanan konversi, dan halaman ini tidak memintanya.

Contoh

File pada menit kelima

Masukan

1
00:05:00,000 --> 00:05:02,000
The room is dark.

2
00:10:00,000 --> 00:10:03,000
A cold night.

Keluaran

1
00:04:59,667 --> 00:05:01,667
The room is dark.

2
00:09:59,400 --> 00:10:02,400
A cold night.

Koreksinya bukan satu angka yang diterapkan ke seluruh file: pada menit kelima jam mundur 333 ms dan pada menit kesepuluh mundur 600 ms, karena drop-frame telah membuang sepuluh label pada cue pertama dan delapan belas pada cue kedua. Setiap cue mempertahankan panjangnya sampai milidetik, sebab kedua tepinya bergerak dengan jumlah yang sama — ini pelabelan ulang, bukan pergeseran.

Koreksi yang sama pada satu jam

Masukan

1
01:00:03,600 --> 01:00:06,600
An hour into the programme.

Keluaran

1
01:00:00,000 --> 01:00:03,000
An hour into the programme.

Pada satu jam, 01:00:03,600 versi drop-frame adalah 01:00:00,000 versi non-drop — 108 label yang dilewati, 3600 ms. Ini angka untuk memeriksa halaman ini: baris pertama output seharusnya tepat 3600 ms lebih awal daripada baris pertama input, dan file yang berasal dari perangkat drop-frame seharusnya mendarat di jam bulat.

Cue di dalam menit pertama

Masukan

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:05:00,000 --> 00:05:02,000
This one does move.

Keluaran

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:04:59,667 --> 00:05:01,667
This one does move.

Selama menit pertama sebuah jam tidak ada label yang dibuang, jadi kedua konvensi mengeja enam puluh detik itu secara identik dan cue pertama dibiarkan. Cue kedua, pada menit kelima, bergerak. Satu cue tidak berubah di samping satu cue yang bergerak adalah output yang benar untuk file ini dan bukan proses yang macet — koreksinya nol di awal sebuah jam dan tumbuh sejak batas menit pertama.

Pertanyaan yang sering diajukan

Mengapa subtitle keluar lebih awal, bukan lebih lambat?

Karena jam di file lebih besar daripada instan yang dinamainya. Non-drop-frame menghitung 30 label per detik seolah-olah 29,97 fps menghasilkan 30 frame per detik, sehingga ia perlahan berjalan mendahului waktu nyata; drop-frame melewati dua label per menit agar tetap sejalan dengannya. Jam yang dibaca dari perangkat drop-frame lalu ditafsirkan sebagai non-drop karena itu menunjuk melewati tempat yang seharusnya, dan perbaikannya mengurangi kelebihan itu: 333 ms pada lima menit, 3600 ms pada satu jam, 36000 ms pada sepuluh jam. Jumlahnya nol untuk setiap jam di dalam menit pertama sebuah jam, jadi koreksi terkecil yang pernah diterapkan halaman ini adalah koreksi di batas menit pertama, dan tidak ada jam yang didorong ke bawah 00:00:00.

Apa yang terjadi pada timecode drop-frame yang tidak bisa ditulis?

Nilai itu ditarik mundur ke label terakhir yang bisa ditulis. Setiap menit yang melewati label dalam drop-frame kehilangan label ;00 dan ;01-nya, sehingga 00:01:00,000 dan 00:01:00,010 bukan jam yang bisa ditampilkan konvensi itu: keduanya mendarat di 00:00:59,933, 67 milidetik lebih awal. Ini satu-satunya tempat di halaman ini yang outputnya bukan pelabelan ulang yang persis, dan batasnya jelas — dua label per menit yang melewati label, 216 nilai selama dua jam — jadi halaman ini menyebutkannya di sini alih-alih membiarkan Anda menemukannya di diff.

Bisakah sebuah cue hilang dari file saya?

Hanya cue yang lebih pendek dari satu frame, 33,37 ms. Ada dua hal yang bisa mendorong cue ke satu frame: perapatan yang dijelaskan di atas, ketika cue sepuluh milidetik seperti 00:01:00,000 sampai 00:01:00,010 memiliki kedua tepi yang ditarik ke 00:00:59,933, dan cue yang sudah lebih pendek dari satu frame saat tiba. Cue yang waktu mulai dan waktu akhirnya sama tidak bisa ditulis, jadi ia dibuang dan jumlahnya muncul di laporan kehilangan di atas area kerja. File yang tidak memilikinya tidak melaporkan apa pun, dan itulah kasus yang biasa.

Apakah ada yang berubah di file selain nilai jam?

Tidak. Nomor cue, urutannya, teks setiap baris, pemisah baris keras di dalam cue, dan jumlah cue seluruhnya adalah milik file dan tetap seperti semula. Halaman ini menulis dua angka yang sama per cue, dengan label yang diubah. Ia juga tidak mencatat di mana pun bahwa jam sekarang non-drop, karena tidak ada format yang dibaca di sini — SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON, CSV — yang memiliki bidang untuk menyimpannya, dan file yang Anda jatuhkan juga tidak menyatakannya.

Frame rate apa yang harus saya isi di kotak?

Rate apa pun yang benar-benar dimiliki rekaman; nilainya tidak memengaruhi konversi ini. 30 dan 29,97 pada nama halaman ini adalah konvensi penghitungan yang tertulis pada string timecode, bukan frame rate video, jadi tidak ada yang diskalakan oleh angka yang Anda masukkan. Kotak itu wajib hanya karena MicroDVD menyimpan timing sebagai nomor frame dan bukan sebagai jam, sehingga membaca file MicroDVD mustahil tanpa mengetahui frame rate-nya.

Jika saya menjalankan halaman sebaliknya pada output ini, apakah file aslinya kembali?

Ya, byte demi byte, selama tidak ada timecode yang jatuh ke kelas yang tidak bisa ditulis drop-frame. Kedua halaman adalah aritmetika yang sama yang dibaca dalam arah berlawanan: halaman ini mengurangi jumlah yang tumbuh, halaman lain menambahkannya kembali, dan jumlahnya ditentukan oleh posisi setiap cue alih-alih oleh offset tetap. Pengecualiannya adalah kasus perapatan — 00:01:00,000 yang keluar sebagai 00:00:59,933 kembali sebagai 00:00:59,933 — dan itulah satu-satunya kelas timestamp yang bukan perjalanan pulang-pergi bagi pasangan halaman ini.

Alat terkait