如何从帧中获取时间码?
how to get TIMECODE from a FRAME?
我正在尝试根据帧率将帧转换为时间码。
示例 1:
帧率是:23.976 fps (C1)
视频帧为:145068 (C2)
时间码是 01:40:50.544000000
时间码的格式为:HH:MM:SS.nnnnnnnnn(时:分:秒:纳秒)
-
编辑 1:
谢谢@Sangbok Lee / @Owen Campbell
现在我发现我可能在我的逻辑中选择了错误的方法(因为@Sangbok Lee 的回答对 "given" 数据不会错)...我假设如果我知道 FPS 和 FRAMERATE 我可以轻松转换FRAME 进入 TIMECODE 但看起来我哪里错了...
示例 2:我的视频文件 (mkv) fps 是 23.976。视频包含章节 (xml),其中一个章节标记为 01:40:50.544000000。现在,如果我跳到我的视频播放器 (potplayer) 中的那个章节标记并检查它说我在第 145068 帧的帧。
要点是,如果我抓取相同的视频文件(现在没有章节)并且我知道我想要 "chapter start" 的帧 (145068),我怎样才能得到这个 - 01:40:50.544000000 时间码 ?? <- 那是我真正的问题
编辑 2:
我刚刚发现 23,976 是 "fake" 数字。真正的 fps 是 24000/1001,即 23.976023976023976023976023976024,使用@Sangbok Lee 的公式,它给了我 01:40:50.544500000,我相信这是一个真正的交易。 -> sheet
更简单的方法是使用公式:
=TEXT( C2 / LEFT(C1,LEN(C1)-4) / 86400, "hh:mm:ss.000" )
虽然它并没有完全给出纳秒。
此公式获取视频帧并将其除以帧率以获得经过的秒数。将其除以 86400(一天中的秒数)以获得一天过去的百分比。 TEXT 函数可以将其格式化为时间戳。
为了获得帧率,我使用 LEFT 公式从单元格 (fps
) 中删除了最后 4 个字符。
编辑:
如 here 所述,似乎很难在 Excel 中正确显示纳秒。这是必要的要求吗?
编辑 2:
使用 的高级方法并结合解析 fps 单元格中的数字,可以使用以下公式:
=TEXT(((C2/LEFT(C1, LEN(C1)-4))-MOD(C2/LEFT(C1, LEN(C1)-4),60))/86400,"hh:mm:")&MOD(C2/LEFT(C1, LEN(C1)-4),60)
让我们把这个复杂的问题分成几个部分。
- 将
E2
(hh) 设置为 =roundDown(C2/(3600*C1))
- 将
F2
(mm)设置为=roundDown((C2-(E2*(3600*C1)))/(60*C1))
- 将
G2
(ss) 设置为 =roundDown((C2-(E2*(3600*C1))-(F2*(60*C1)))/C1)
- 将
H2
(n...n) 设置为 =round((C2-(E2*(3600*C1))-(F2*(60*C1))-(G2*C1))/C1*1000000000)
。您使用的公式不适用于纳秒。用于框架。
- 现在连接这些。将
I2
设置为:
=if(len(E2)=1, "0"&E2, E2)&":"&
if(len(F2)=1, "0"&F2, F2)&":"&
if(len(G2)=1, "0"&G2, G2)&"."&
rept("0", 9-len(H2))&H2
- 结果是
00:10:23.832165499
。它与 Owen Campbell 的答案 (00:10:23.832
) 相同,因此我认为您的第一个计算是错误的。样本 sheet 是 here.
我正在尝试根据帧率将帧转换为时间码。
示例 1:
帧率是:23.976 fps (C1)
视频帧为:145068 (C2)
时间码是 01:40:50.544000000
时间码的格式为:HH:MM:SS.nnnnnnnnn(时:分:秒:纳秒)
-
编辑 1: 谢谢@Sangbok Lee / @Owen Campbell
现在我发现我可能在我的逻辑中选择了错误的方法(因为@Sangbok Lee 的回答对 "given" 数据不会错)...我假设如果我知道 FPS 和 FRAMERATE 我可以轻松转换FRAME 进入 TIMECODE 但看起来我哪里错了...
示例 2:我的视频文件 (mkv) fps 是 23.976。视频包含章节 (xml),其中一个章节标记为 01:40:50.544000000。现在,如果我跳到我的视频播放器 (potplayer) 中的那个章节标记并检查它说我在第 145068 帧的帧。
要点是,如果我抓取相同的视频文件(现在没有章节)并且我知道我想要 "chapter start" 的帧 (145068),我怎样才能得到这个 - 01:40:50.544000000 时间码 ?? <- 那是我真正的问题
编辑 2:
我刚刚发现 23,976 是 "fake" 数字。真正的 fps 是 24000/1001,即 23.976023976023976023976023976024,使用@Sangbok Lee 的公式,它给了我 01:40:50.544500000,我相信这是一个真正的交易。 -> sheet
更简单的方法是使用公式:
=TEXT( C2 / LEFT(C1,LEN(C1)-4) / 86400, "hh:mm:ss.000" )
虽然它并没有完全给出纳秒。
此公式获取视频帧并将其除以帧率以获得经过的秒数。将其除以 86400(一天中的秒数)以获得一天过去的百分比。 TEXT 函数可以将其格式化为时间戳。
为了获得帧率,我使用 LEFT 公式从单元格 (fps
) 中删除了最后 4 个字符。
编辑:
如 here 所述,似乎很难在 Excel 中正确显示纳秒。这是必要的要求吗?
编辑 2:
使用
=TEXT(((C2/LEFT(C1, LEN(C1)-4))-MOD(C2/LEFT(C1, LEN(C1)-4),60))/86400,"hh:mm:")&MOD(C2/LEFT(C1, LEN(C1)-4),60)
让我们把这个复杂的问题分成几个部分。
- 将
E2
(hh) 设置为=roundDown(C2/(3600*C1))
- 将
F2
(mm)设置为=roundDown((C2-(E2*(3600*C1)))/(60*C1))
- 将
G2
(ss) 设置为=roundDown((C2-(E2*(3600*C1))-(F2*(60*C1)))/C1)
- 将
H2
(n...n) 设置为=round((C2-(E2*(3600*C1))-(F2*(60*C1))-(G2*C1))/C1*1000000000)
。您使用的公式不适用于纳秒。用于框架。 - 现在连接这些。将
I2
设置为:
=if(len(E2)=1, "0"&E2, E2)&":"&
if(len(F2)=1, "0"&F2, F2)&":"&
if(len(G2)=1, "0"&G2, G2)&"."&
rept("0", 9-len(H2))&H2
- 结果是
00:10:23.832165499
。它与 Owen Campbell 的答案 (00:10:23.832
) 相同,因此我认为您的第一个计算是错误的。样本 sheet 是 here.