शब्दकोश

टाइम बेस क्या है?

यदि आपने अपनी फ़ाइल में Time Base का कोई मान पाया है, तो आप निश्चित रूप से जानना चाहेंगे कि उसका क्या अर्थ है। Time Base मेटाडेटा के बारे में हमने जो जानकारी एकत्र की है, उसे जानें।

time-base

टाइम बेस वह समय इकाई है जिसमें कोई स्ट्रीम गिनती करती है। सेकंड में टाइमस्टैम्प सहेजने के बजाय, एक मीडिया फ़ाइल अपनी ही घड़ी के टिक की गिनती रखती है, और टाइम बेस यह बताता है कि एक टिक कितनी देर का होता है। इसे सेकंड के भिन्न (fraction) के रूप में लिखा जाता है।

कौन सी फाइलें इसे रखती हैं और यह मान कहां से आता है

आपको मीडिया फ़ाइलों के अंदर प्रत्येक अलग स्ट्रीम पर टाइम बेस मिलेगा - वीडियो, ऑडियो और कोई भी सबटाइटल्स, जैसे MP4, MOV, MKV, WebM, AVI और MPEG ट्रांसपोर्ट स्ट्रीम्स में, साथ ही स्टैंडअलोन ऑडियो फ़ाइलों में। हर स्ट्रीम का अपना टाइम बेस होता है, इसलिए एक ही फ़ाइल में ऑडियो और वीडियो आमतौर पर अलग इकाइयों में गिनती करते हैं।

यह मान एन्कोडर या उस प्रोग्राम द्वारा चुना जाता है जिसने फ़ाइल को तैयार किया। कुछ कंटेनर फ़ॉर्मैट्स किसी तय टाइम बेस की आवश्यकता रखते हैं और उसे निश्चित कर देते हैं; जहाँ फ़ॉर्मैट में चुनाव की गुंजाइश हो, वहाँ फ़ाइल लिखने वाला प्रोग्राम ऐसी वैल्यू चुनता है जो सामग्री के अनुकूल हो, और फ़ाइल में बस उसी प्रोग्राम की डिफ़ॉल्ट वैल्यू आ सकती है।

मान कैसा दिखता है

यह हमेशा एक भिन्न होता है, और नीचे वाला अंक प्रति सेकंड टिक की संख्या बताता है:

  • 1/1000 - प्रति टिक एक मिलीसेकंड, Matroska और WebM फ़ाइलों में सामान्य चुनाव
  • 1/90000 - MPEG ट्रांसपोर्ट स्ट्रीम्स में लंबे समय से प्रचलित
  • 1/48000 - ऑडियो स्ट्रीम्स अक्सर सैम्पल्स में गिनती करती हैं, इसलिए टाइम बेस सैम्पलिंग रेट से मेल खाता है
  • 1/12800 - यह मान अक्सर MP4 फ़ाइलों की वीडियो स्ट्रीम्स में दिखता है

किसी टाइमस्टैम्प को सेकंड में बदलने के लिए, उसे भिन्न से गुणा करें। 1/12800 के टाइम बेस वाली स्ट्रीम में 12800 का प्रेज़ेंटेशन टाइमस्टैम्प ठीक एक सेकंड होता है; 1/1000 के टाइम बेस में 3500 का टाइमस्टैम्प साढ़े तीन सेकंड होता है। इसी वजह से रिपोर्ट में कच्चे टाइमस्टैम्प बहुत बड़े अंकों जैसे दिखते हैं - वे सेकंड नहीं, टिक की गिनतियाँ हैं। पुराने टूल्स इसके साथ एक अलग Codec Time Base पंक्ति भी दिखा सकते हैं।

यह क्यों महत्वपूर्ण है

मीडिया फ़ाइल में हर घटना पूरे टिक पर ही होती है, इसलिए टाइम बेस यह तय करता है कि स्ट्रीम समय को कितनी बारीकी से व्यक्त कर सकती है। अगर कोई फ़्रेम या सैम्पल दो टिकों के बीच आता है, तो उसके टाइमस्टैम्प को राउंड करना पड़ता है, और यह राउंडिंग त्रुटियाँ जमा होती जाती हैं।

यह उन वीडियो फ़्रेम दरों पर वास्तविक समस्या है जो पूर्णांक नहीं हैं। 1001 सेकंड में 30000 फ़्रेम की ब्रॉडकास्ट दर पर, एक फ़्रेम लगभग 33 मिलीसेकंड से थोड़ा अधिक रहता है, लेकिन ठीक किसी गोल संख्या जितना नहीं, इसलिए मिलीसेकंड वाला टाइम बेस किसी भी फ़्रेम को बिल्कुल सही स्थान पर नहीं रख सकता। प्रति सेकंड अधिक टिक वाला टाइम बेस - यानी भिन्न के नीचे बड़ा अंक - हर फ़्रेम की सीमा पर ठीक-ठीक आ सकता है, इसी कारण एन्कोडर साधारण मिलीसेकंड की बजाय 1/12800 या 1/90000 जैसी वैल्यू को तरजीह देते हैं।

इसके परिणाम टाइमिंग त्रुटियों के रूप में नज़र आते हैं, न कि किसी एकल फ़्रेम में दिखने वाली चीज़ के रूप में: आवाज़ का धीरे-धीरे तस्वीर से असमतुलित होना, फ़्रेमों के बीच असमान अंतराल, कट या सीक का थोड़ा हटकर लगना। जिन फ़ाइलों की स्ट्रीम्स अलग-अलग टाइम बेस में गिनती करती हैं उन्हें जोड़ने पर सभी टाइमस्टैम्प को फिर से स्केल करना पड़ता है, और यह रूपांतरण सिंक्रोनाइज़ेशन बग्स का एक जाना-पहचाना कारण है। यह फ़ील्ड अपने आप में इमेज या साउंड क्वालिटी को बिल्कुल प्रभावित नहीं करता और इसमें कोई निजी जानकारी नहीं होती।

मेटा कीज़