时间码计算

问题描述 投票:0回答:1

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

示例1:

帧率为:25 fps(C1)

视频帧是:145068(C2)

其时间码为01:36:42.18

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

-

video excel-formula frame-rate texel
1个回答
0
投票

您可以通过两种方式执行此操作。您可以在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")

问候,

© www.soinside.com 2019 - 2024. All rights reserved.