我试图根据帧率将帧转换为时间码。
示例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")
问候,