2011-12-13 44 views
5

タイムコードデルタの計算に関する質問がありました。
私はので、私は15:41:08:02のような、別のrefrenceファイルからいくつかのデータを取得するタイムコードを含むムービーファイルからのメタデータは(FF =フレーム、例えば00->23framerate-1のように、そのような00HH:MM:SS:FFタイムコードの計算方法は?

をフォーマットさ

を読みます私は15:41:07:00
を得るようになりました。私は時間オフセットを計算する必要があります(timedeltaのように、フレームだけで)。
どうすればいいですか?

答えて

4
framerate = 24 

def timecode_to_frames(timecode): 
    return sum(f * int(t) for f,t in zip((3600*framerate, 60*framerate, framerate, 1), timecode.split(':'))) 

print timecode_to_frames('15:41:08:02') - timecode_to_frames('15:41:07:00') 
# returns 26 

def frames_to_timecode(frames): 
    return '{0:02d}:{1:02d}:{2:02d}:{3:02d}'.format(frames/(3600*framerate), 
                frames/(60*framerate) % 60, 
                frames/framerate % 60, 
                frames % framerate) 

print frames_to_timecode(26) 
# returns "00:00:01:02" 
+0

ありがとうございました。どのように親切で速い人がここにいるのか驚いた。 – Malu05

2

私はちょうど私が絶対値の表現にマイナスを付加したいだけ負のフレーム番号の表示

def tc_to_frame(hh, mm, ss, ff): 
    return ff + (ss + mm*60 + hh*3600) * frame_rate 

def frame_to_tc(fn): 
    ff = fn % frame_rate 
    s = fn // frame_rate 
    return (s // 3600, s // 60 % 60, s % 60, ff) 

ためのタイムコードに戻って変換する、すべての計算のためgobalフレーム番号を使用したいです

0

タイムコードがSMPTE timecodeの場合は、ドロップフレームを考慮する必要があります。ドロップフレームタイムコードは、分数が10で割り切れる場合を除いて、毎分の1秒目のフレーム番号0と1を削除します。

This pageタイムコードとフレーム番号の間で変換する式をいくつか提供します。

+0

親愛なるyannickさん、以下の質問をお読みになりましたか?慎重にお読みください... – Trinimon

+0

ドロップフレームタイムコードの場合、01:08:59:29と01:09:00:02の間のタイムオフセットは1でなければなりません。 – yannick

関連する問題