Công cụ đổi Frame sang Timecode là gì?
Công cụ này chuyển một số frame thô thành timecode theo chuẩn SMPTE, viết dưới dạng HH:MM:SS:FF (giờ, phút, giây, frame). Editor, animator, colorist và dân làm motion graphics luôn làm việc theo frame, nhưng các spec giao file, EDL hay note review lại thường được ghi bằng timecode. Bạn chỉ cần nhập tổng số frame và tốc độ khung hình của dự án để có ngay timecode chính xác cùng thời lượng tương ứng tính bằng giây.
Cách sử dụng
Nhập tổng số frame, sau đó chọn tốc độ khung hình (fps) khớp với chuỗi hình của bạn — các giá trị phổ biến là 24, 25, 29.97, 30, 50, 59.94 và 60. Công cụ sẽ trả về timecode kèm theo bảng phân tích giờ, phút, giây và số frame còn lại, cùng tổng thời lượng tính bằng giây.
Giải thích công thức
Thời lượng tính bằng giây đơn giản là số frame chia cho tốc độ khung hình. Để dựng timecode, số frame được chia cho tốc độ khung hình (làm tròn về số nguyên) để lấy số giây nguyên; giá trị này được tách thành giờ, phút và giây, còn phần frame dư sẽ tạo nên trường FF: \(\text{FF} = \text{Frames} \bmod \text{FPS}\). Công cụ này dùng cách đếm non-drop-frame, tức mỗi giây luôn chứa cùng một số frame nguyên.
$$\begin{gathered} \text{TC} = \text{HH}:\text{MM}:\text{SS}:\text{FF} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} r &= \operatorname{round}\!\left(\text{FPS}\right) \\ \text{FF} &= \text{Frames} \bmod r \\ S &= \left\lfloor \dfrac{\text{Frames}}{r} \right\rfloor \\ \text{SS} &= S \bmod 60 \\ \text{MM} &= \left\lfloor \dfrac{S}{60} \right\rfloor \bmod 60 \\ \text{HH} &= \left\lfloor \dfrac{S}{3600} \right\rfloor \end{aligned} \right. \end{gathered}$$
Ví dụ minh họa
Giả sử bạn có 1500 frame ở 30 fps. Thời lượng = \(1500 \div 30 = 50\) giây. Số giây nguyên = 50, nên MM = 0, SS = 50, và số frame dư \(\text{FF} = 1500 \bmod 30 = 0\). Timecode sẽ là 00:00:50:00.
Câu hỏi thường gặp
Công cụ này có dùng drop-frame timecode không? Không — nó tính theo timecode non-drop-frame (NDF). Ở 29.97 hoặc 59.94 fps, các file giao cho truyền hình có thể yêu cầu drop-frame, tức bỏ qua một số số frame theo chu kỳ để giữ đồng bộ với thời gian thực.
Tại sao lại làm tròn 29.97 thành 30 cho trường FF? Trường frame trong timecode là số nguyên, nên tốc độ nguyên danh nghĩa (30) được dùng cho bảng phân tích HH:MM:SS:FF, còn tốc độ chính xác (29.97) được dùng để tính thời lượng chính xác bằng giây.
Tôi có thể làm ngược lại không? Có — để chuyển từ timecode về frame, hãy nhân từng trường ra: \(\text{Frames} = \left( \left( \text{HH} \times 3600 + \text{MM} \times 60 + \text{SS} \right) \times \text{FPS} \right) + \text{FF}\).