什么是帧数转时间码计算器?
这款工具可以把原始帧数换算成 SMPTE 标准格式的时间码,即 HH:MM:SS:FF(时:分:秒:帧)。剪辑师、动画师、调色师和动态图形设计师在制作时往往以"帧"为单位思考,但交付规范、EDL 套底表以及审片意见通常都用时间码来表达。只需输入总帧数和项目的帧率,就能立刻得到准确的时间码,以及对应的总时长(以秒计)。
使用方法
先填入总帧数,再选择与你的序列相匹配的帧率(fps)——常见的有 24、25、29.97、30、50、59.94 和 60。计算器会给出时间码,并拆解出时、分、秒和余下的帧数,同时显示以秒为单位的总时长。
公式说明
总时长(秒)就是帧数除以帧率。要生成时间码,先用帧数除以帧率的整数(四舍五入后)得到整秒数;再把整秒数拆分为时、分、秒,而剩下的帧数则构成 FF(帧)字段:\(\text{FF} = \text{Frames} \bmod \text{fps}\)。本计算器采用非丢帧(non-drop-frame)计数方式,即每一秒都包含相同的整数帧。
$$\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}$$
实例演算
假设你有 1500 帧、帧率为 30 fps。时长 $$= 1500 \div 30 = 50 \text{ 秒}$$ 整秒数为 50,因此 \(\text{MM} = 0\)、\(\text{SS} = 50\),余下的帧数 $$\text{FF} = 1500 \bmod 30 = 0$$ 最终时间码为 00:00:50:00。
常见问题
这是丢帧时间码吗? 不是——本工具计算的是非丢帧(NDF)时间码。在 29.97 或 59.94 fps 下,广播交付有时需要采用丢帧时间码,它会周期性地跳过某些帧编号,从而与实际钟表时间保持一致。
为什么 FF 字段里要把 29.97 取整为 30? 时间码的帧字段必须是整数,所以在 HH:MM:SS:FF 的拆分中使用标称的整数帧率(30),而在计算精确的总时长(秒)时则使用精确帧率(29.97)。
能反过来换算吗? 可以——把时间码换算回帧数时,将各字段展开相乘即可:$$\text{Frames} = ((\text{HH} \times 3600 + \text{MM} \times 60 + \text{SS}) \times \text{fps}) + \text{FF}$$