2011-12-13 28 views
5

Tengo una pregunta sobre el cálculo del código de tiempo delta.
que leer los metadatos de un archivo de película que contiene un código de tiempo con formato HH:MM:SS:FF¿Cómo hacer el cálculo del código de tiempo?

(FF = marco, 00->23 por ejemplo. Así es como 00 a framerate-1)

por lo que obtener algunos datos como 15:41:08:02 y de otro archivo refrence Obtengo 15:41:07:00
Ahora tengo que calcular el timeoffset (como timedelta pero solo con frames).
¿Cómo voy a hacer esto?

Respuesta

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

Muchas gracias por todas las respuestas rápidas a todos! Sorprendido de lo amable y rápida que es la gente aquí. – Malu05

2

yo sólo haría uso de números de cuadro gobal para todos los cálculos, convertir de nuevo a los códigos de tiempo solamente para la exhibición

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) 

para los números de fotograma negativos Me Anteponer un signo menos a la representación del valor absoluto

0

Si el código de tiempo es SMPTE timecode, es posible que deba tener en cuenta colocar cuadros. Los códigos de tiempo drop-frame eliminan los números de cuadro 0 y 1 del primer segundo de cada minuto, excepto cuando el número de minutos es divisible por 10.

This page proporciona algunos antecedentes del historial con fórmulas para convertir entre códigos de tiempo y números de cuadro.

+0

Querido yannick, ¿has leído la pregunta a continuación? Lea atentamente ... – Trinimon

+0

Para código de tiempo drop-frame, el timeoffset entre 01: 08: 59: 29 y 01: 09: 00: 02 debe ser 1, ¿no es así? – yannick

Cuestiones relacionadas