Video 时间码计算

Video 时间码计算,video,excel-formula,frame-rate,texel,Video,Excel Formula,Frame Rate,Texel,我正在尝试根据帧速率将帧转换为时间码 例1: 帧速率为:25 fps C1 视频帧为:145068 C2 时间码是01:36:42.18 时间码的格式为:HH:MM:SS.FF小时:分钟:秒:帧 -有两种方法可以做到这一点。您可以在Excel中创建自己的函数,该函数接受视频帧速率和帧速率并返回所需的时间码,也可以使用一些工作表函数执行相同的计算 在每种情况下,您都需要将视频帧除以帧速率和3600除以一小时内的秒数才能得到小时部分。然后将视频帧速率除以帧速率和60,然后减去之前计算的小时数,得到分

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

例1:

帧速率为:25 fps C1

视频帧为:145068 C2

时间码是01:36:42.18

时间码的格式为:HH:MM:SS.FF小时:分钟:秒:帧


-有两种方法可以做到这一点。您可以在Excel中创建自己的函数,该函数接受视频帧速率和帧速率并返回所需的时间码,也可以使用一些工作表函数执行相同的计算

在每种情况下,您都需要将视频帧除以帧速率和3600除以一小时内的秒数才能得到小时部分。然后将视频帧速率除以帧速率和60,然后减去之前计算的小时数,得到分钟部分。接下来,将视频帧除以帧速率,然后减去之前计算的总分钟数。最后,当视频帧除以帧速率时,得到余数。把所有这些结合起来,你就会得到你想要的答案

首先是VBA函数。将其粘贴到新模块中:

Function fTimeCode(lngFrame As Long, lngFrameRate As Long) As String
    Dim lngHour As Long
    Dim lngMinute As Long
    Dim lngSecond As Long
    lngHour = Int(lngFrame / (lngFrameRate * 60 * 60))
    lngMinute = Int(lngFrame / (lngFrameRate * 60)) - (lngHour * 60)
    lngSecond = Int(lngFrame / lngFrameRate) - (lngHour * 60 * 60) - (lngMinute * 60)
    fTimeCode = Format(lngHour, "00") & ":" & Format(lngMinute, "00") & ":" & Format(lngSecond, "00") & "." & Format(lngFrame Mod lngFrameRate, "00")
End Function
您现在可以像使用Excel中的任何内置公式一样使用它,因此您可以在工作表的单元格中键入:

=fTimeCode(C2,C1)
如果您只想使用工作表函数:

=TEXT(INT(C2/(C1*60*60)),"00")&":"&TEXT((INT(C2/(C1*60))-(INT(C2/(C1*60*60)))*60),"00")&":" & TEXT(INT(C2/C1)-(INT(C2/(C1*60))*60),"00")& "." &  TEXT(MOD(C2,C1),"00")
问候,