РАСЧЕТ ВРЕМЕННОГО КОДА
Я пытаюсь преобразовать кадр в тайм-код на основе частоты кадров.
пример 1:
частота кадров: 25 кадров в секунду (C1)
кадр видео: 145068 (C2)
и временной код для этого 01:36:42.18
формат тайм-кода: ЧЧ: ММ: СС.FF (часы: минуты: секунды: кадр)
-
1 ответ
Есть два способа сделать это. Вы можете либо создать свою собственную функцию в 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")
С Уважением,