2011-12-13 38 views
5

Zaman kodu delta hesaplama ile ilgili bir sorum var.
Ben HH:MM:SS:FFZaman kodu hesaplaması nasıl yapılır?

formated bir zaman kodu içeren bir film dosyası meta verileri okumak (FF = çerçevesi, örneğin 00->23. Onun gibi 00framerate-1 So)

Yani ben 15:41:08:02 gibi ve başka refrence dosyasından bazı verileri almak 15:41:07:00
Şimdi, timeoffset'i hesaplamalıyım (timedelta gibi ama sadece kare ile).
Bunu nasıl yaparım?

cevap

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

Herkese hızlı cevaplar için çok teşekkürler! Ne kadar nazik ve hızlı insanlar burada olduğuna şaşırdım. – Malu05

2

Sadece mutlak değer temsiline eksi prepend olmak tek negatif çerçeve sayıları için ekran

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) 

için timecodes geri dönüştürülmesi, bütün hesaplamalar için Küresel çerçeve numaraları kullanmayı tercih ediyorum

0

Zaman kodu SMPTE timecode ise, bırakma çerçevelerini hesaba katmanız gerekebilir. Bırakılan çerçeve zaman kodları, dakika sayısı 10 ile bölünebileceği durumlar hariç, her dakikadaki ilk saniyenin 0 ve 1 kare sayılarını düşürür.

This page, zaman kodları ve çerçeve sayıları arasında dönüştürmek için formüller içeren bir geçmiş geçmişi sağlar.

+0

Sevgili yannick, aşağıdaki soruyu okudun mu? Lütfen dikkatlice okuyun ... – Trinimon

+0

Bırakılan zaman kodu için, 01: 08: 59: 29 ve 01: 09: 00: 02 arasındaki zamanaşımı 1 olmalıdır, değil mi? – yannick

İlgili konular