2011-12-13 12 views
5

मुझे टाइम कोड डेल्टा की गणना करने के बारे में एक प्रश्न मिला।
मैं एक फिल्म एक timecode से स्वरूपित HH:MM:SS:FFटाइमकोड गणना कैसे करें?

युक्त फ़ाइल से मेटाडाटा पढ़ा (FF = फ्रेम, उदाहरण के लिए 00->23। तो अपनी तरह 00framerate-1 करने के लिए)

तो मैं 15:41:08:02 की तरह और एक अन्य refrence फ़ाइल से कुछ डेटा प्राप्त मुझे 15:41:07:00
अब मुझे टाइमऑफसेट की गणना करना है (जैसे टाइमडेल्टा लेकिन फ्रेम के साथ)।
मैं यह कैसे करूँगा?

उत्तर

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

मैं सिर्फ सभी संगणना के लिए gobal फ्रेम नंबरों का उपयोग करना चाहते हैं, केवल नकारात्मक फ्रेम संख्या के लिए प्रदर्शन

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) 

के लिए timecodes वापस करने के लिए परिवर्तित मैं निरपेक्ष मूल्य का प्रतिनिधित्व करने के लिए एक ऋण पहले जोड़ें चाहते हैं

0

यदि टाइमकोड SMPTE timecode है, तो आपको खाता ड्रॉप फ्रेम को ध्यान में रखना पड़ सकता है। ड्रॉप-फ्रेम टाइमकोड प्रत्येक मिनट के पहले दूसरे भाग में फ्रेम संख्या 0 और 1 छोड़ दें, सिवाय इसके कि जब मिनटों की संख्या 10 से विभाजित हो।

This page टाइमकोड और फ्रेम संख्याओं के बीच रूपांतरित करने के लिए सूत्रों के साथ कुछ इतिहास पृष्ठभूमि प्रदान करता है।

+0

प्रिय यानिक, क्या आपने नीचे दिया गया प्रश्न पढ़ा है? कृपया ध्यान से पढ़ें ... – Trinimon

+0

ड्रॉप-फ्रेम टाइमकोड के लिए, 01: 08: 59: 2 9 और 01: 09: 00: 02 के बीच टाइमऑफसेट 1 होना चाहिए, है ना? – yannick

संबंधित मुद्दे