如何从FRAME中获取TIMECODE?

时间:2018-03-30 01:59:44

标签: excel video excel-formula google-sheets frame-rate

我尝试根据帧速率将帧转换为时间码。

示例1:

帧率为: 23.976 fps (C1)

视频帧是: 145068 (C2)

,其时间码为 01:40:50.544000000

时间码格式为: HH:MM:SS.nnnnnnnnn (小时:分钟:秒:纳秒)

-

编辑1: 谢谢@Sangbok Lee / @Owen Campbell

现在我看到我可能在我的逻辑中选择了错误的方法(因为@Sangbok Lee的答案不能错过"给出"数据)...我认为如果我知道FPS和FRAMERATE我可以轻松地将FRAME转换为TIMECODE,但看起来我错了...

示例2:我的视频文件(mkv)fps是23.976。视频包含章节(xml),其中一个章节标记为01:40:50.544000000。现在,如果我在我的视频播放器(potplayer)中跳过那个章节标记,并检查框架,它说我在145068帧。

重点是,如果我抓住相同的视频文件(现在没有章节)并且我知道框架(145068)我想要一个"章节开始",我怎么能得到这个 - 01:40:50.544000000 TIMECODE ?? < - 那是我的真实问题

编辑2:

我只是想到23,976是"假的"数。真正的fps是24000/1001,这是23.976023976023976023976023976024和@Sangbok Lee的公式,它给了我 01:40:50.544500000 ,我认为这是一个真正的交易。 - > sheet

2 个答案:

答案 0 :(得分:1)

更简单的方法是使用公式:

=TEXT( C2 / LEFT(C1,LEN(C1)-4) / 86400, "hh:mm:ss.000" )

但它并没有给出纳秒时间。

此公式采用视频帧并将其除以帧率以获得已经过的秒数。这除以86400(一天中的秒数)以获得一天中的百分比。 TEXT函数可以将其格式化为时间戳。

要获得帧速率,我使用LEFT公式从单元格(fps)中删除最后4个字符。

编辑:

如[{3}}所述,在Excel中正确显示纳秒似乎很困难。这是必要的要求吗?

编辑2:

使用here的优越方法结合解析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)

答案 1 :(得分:1)

让我们把这个复杂的问题分成几部分。

  1. E2(hh)设为=roundDown(C2/(3600*C1))
  2. F2(mm)设为=roundDown((C2-(E2*(3600*C1)))/(60*C1))
  3. G2(ss)设为=roundDown((C2-(E2*(3600*C1))-(F2*(60*C1)))/C1)
  4. H2(n ... n)设为=round((C2-(E2*(3600*C1))-(F2*(60*C1))-(G2*C1))/C1*1000000000)。您使用的公式不是纳秒。这是框架。
  5. 现在连接这些。将I2设置为:
  6. =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

    1. 结果为00:10:23.832165499。它与 Owen Campbell 的答案(00:10:23.832)相同,所以我认为你的第一次计算是错误的。样本表为here