2011-12-13 1 views
5

Ho una domanda riguardante il calcolo del delta del time code.
Ho letto i metadati da un filmato che contiene un codice di tempo formattato HH:MM:SS:FFCome eseguire il calcolo del codice di tempo?

(FF = telaio, 00->23 per esempio. Così la sua come 00 a framerate-1)

in modo da ottenere alcuni dati come 15:41:08:02 e da un altro file refrence ottengo 15:41:07:00
Ora devo calcolare il timeoffset (come timedelta ma solo con i frame).
Come potrei andare in giro facendo questo?

risposta

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

Grazie mille per tutte le risposte rapide a tutti! Sorpreso quanto siano gentili e veloci le persone qui. – Malu05

2

mi basta usare numeri di telaio Gobal per tutti i calcoli, riconversione timecode solo per la visualizzazione

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) 

per numeri di telaio negativi avrei anteporre un segno meno per la rappresentazione del valore assoluto

0

Se il timecode è SMPTE timecode, potrebbe essere necessario prendere in considerazione frame drop. I timecode Drop-frame rilasciano i numeri di fotogramma 0 e 1 del primo secondo di ogni minuto, tranne quando il numero di minuti è divisibile per 10.

This page fornisce alcuni precedenti di cronologia con formule per la conversione tra timecode e numeri di fotogramma.

+0

Caro yannick, hai letto la domanda qui sotto? Leggere attentamente ... – Trinimon

+0

Per il codice di tempo drop frame, il fuso orario tra 01: 08: 59: 29 e 01: 09: 00: 02 dovrebbe essere 1, non dovrebbe? – yannick