我尝试根据帧速率将帧转换为时间码。
示例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
答案 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)
让我们把这个复杂的问题分成几部分。
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
)相同,所以我认为你的第一次计算是错误的。样本表为here。