वीडियो और उपशीर्षक · उपशीर्षक टूलकिट
उपशीर्षक टाइमकोड की तुलना: SRT अल्पविराम, VTT बिंदु और SMPTE फ़्रेम
· पेजभूमि
उपशीर्षक टाइमकोड फ्रेम रेट
कैप्शन कार्य में समय लिखने के तीन तरीके दिखाई देते हैं: SRT का HH:MM:SS,mmm, WebVTT का HH:MM:SS.mmm और SMPTE का HH:MM:SS:FF। यह पोस्ट बताती है कि प्रत्येक का क्या मतलब है, वे कैसे रूपांतरित होते हैं और कहां रूपांतरण गलत होते हैं।
एक ही क्षण को तीन तरह से लिखा जाता है - एक एडिटर को एक परियोजना में मिलने वाले टाइमकोड का एक त्वरित दौरा
एक प्रोजेक्ट एक एडिटर को एक ही समय में तीन तरह से लिख सकता है। उपशीर्षक फ़ाइल मिलीसेकंड से पहले घंटे, मिनट, सेकंड और अल्पविराम का उपयोग करती है। वेब कैप्शन फ़ाइल उसी स्थिति में एक बिंदु का उपयोग करती है। संपादन निर्णय सूची भिन्न के बजाय फ़्रेम संख्या का उपयोग करती है। तीनों एक ही क्षण का नाम देते हैं, और उनमें से केवल एक को सामग्री के बारे में कुछ भी जाने बिना पढ़ा जा सकता है।
वह आखिरी बिंदु वही है जो मायने रखता है। इनमें से दो नोटेशन पूर्ण हैं और एक नहीं है, और जब अंतर को नजरअंदाज कर दिया जाता है तो उनके बीच रूपांतरण एक विशिष्ट तरीके से विफल हो जाते हैं।
अल्पविराम के साथ मिलीसेकंड: SRT - एक यूरोपीय दशमलव आदत जो एक प्रारूप नियम बन गई
SRT घंटे, मिनट, सेकंड, एक अल्पविराम और मिलीसेकंड के ठीक तीन अंक लिखता है। यूरोपीय सम्मेलन में अल्पविराम एक दशमलव विभाजक है, और यह विनिर्देश के बजाय उपयोग द्वारा एक प्रारूप नियम बन गया, क्योंकि सबरिप के पास इसे ठीक करने के लिए कोई मानक दस्तावेज़ नहीं था। मूल्य के बारे में कुछ भी यूरोपीय नहीं है; केवल विराम चिह्न है.
यहां पार्सर दाईं ओर जो भी अंक पाता है उसे तीन में जोड़कर मिलीसेकंड पढ़ता है, इसलिए एक अंक में समाप्त होने वाला टाइमस्टैम्प इकाइयों के बजाय सैकड़ों मिलीसेकंड के रूप में पढ़ा जाता है। यह मायने रखता है क्योंकि हाथ से या ढीले कन्वर्टर द्वारा लिखी गई फाइलें हमेशा तीन अंक प्रदान नहीं करती हैं, और इकाइयों के रूप में एक अनुगामी अंक को पढ़ने से संकेत लगभग एक सेकंड पहले आ जाएगा।
एक बिंदु के साथ मिलीसेकंड: WebVTT - समान मान, अलग विभाजक, और यह पार्सर्स के लिए क्यों मायने रखता है
WebVTT एक बिंदु के साथ समान मान लिखता है, और घंटे फ़ील्ड को पूरी तरह से छोड़ने की अनुमति देता है, इसलिए दो-फ़ील्ड फ़ॉर्म मान्य है जहां SRT तीन की अपेक्षा करता है। एक पार्सर के लिए ये वास्तव में अलग-अलग व्याकरण हैं, यही कारण है कि प्रत्येक संख्या सही होने के बावजूद अकेले विराम चिह्न के लिए फ़ाइल को अस्वीकार कर दिया जा सकता है।
वास्तविक फ़ाइलें लगातार दोनों को मिलाती हैं, इसलिए पार्सर किसी भी विभाजक को स्वीकार करता है, भले ही फ़ाइल किस प्रारूप में होने का दावा करती हो। वह सहनशीलता केवल इनपुट पर है। आउटपुट पर विभाजक को लक्ष्य प्रारूप द्वारा चुना जाता है, SRT के लिए अल्पविराम और WebVTT के लिए एक बिंदु, इसलिए जो भी अनियमितता आती है उसकी एक प्रति के बजाय एक परिवर्तित फ़ाइल विहित होती है।
फ़्रेम: SMPTE टाइमकोड - HH:MM:SS:FF, फ़्रेम दर और ड्रॉप-फ़्रेम जटिलता पर इसकी निर्भरता
SMPTE टाइमकोड भिन्नात्मक भाग को एक फ्रेम संख्या से बदल देता है, जो घंटे, मिनट, सेकंड और फ्रेम देता है। अन्य दो के विपरीत इसकी अकेले व्याख्या नहीं की जा सकती है: फ्रेम बारह, तीस की तुलना में पच्चीस फ्रेम प्रति सेकंड पर एक अलग क्षण है, इसलिए घोषित दर के बिना एक फ्रेम-आधारित टाइमकोड केवल अस्पष्ट होने के बजाय अधूरा है।
ड्रॉप-फ़्रेम एक दूसरी जटिलता जोड़ता है। 29.97 फ्रेम प्रति सेकंड पर सामग्री की गिनती ऐसे की जाती है जैसे कि यह तीस थी, और गिनती को घड़ी के साथ संरेखित रखने के लिए अधिकांश मिनटों की शुरुआत में दो फ्रेम संख्याओं को छोड़ दिया जाता है, जिसमें हर दसवें मिनट की छूट होती है। तख्ते गिराए नहीं जाते; केवल लेबल हैं. ड्रॉप-फ़्रेम टाइमकोड एक गिनती परंपरा है, और इसे सादे फ़्रेम गिनती के रूप में मानने से एक त्रुटि उत्पन्न होती है जो पूरे प्रोग्राम में बढ़ती है।
फ़्रेम को मिलीसेकंड में परिवर्तित करना - अंकगणित और पूर्णांकन जो छोटी लेकिन वास्तविक त्रुटियाँ उत्पन्न करता है
फ़्रेम को मिलीसेकंड में परिवर्तित करना फ़्रेम दर से एक विभाजन है, और गोलाई वह जगह है जहां छोटी त्रुटियां प्रवेश करती हैं। एक फ्रेम इंडेक्स को दर से विभाजित किया जाता है और एक हजार से गुणा किया जाता है, शायद ही कभी पूरे मिलीसेकंड पर उतरता है, और परिणाम को संग्रहीत करने के लिए गोल करना पड़ता है। आंतरिक रूप से संकेतों को शून्य से गिने जाने वाले पूरे मिलीसेकंड के रूप में रखा जाता है, इसलिए उस प्रतिनिधित्व में प्रत्येक रूपांतरण एक बार होता है।
एक चक्कर हानिरहित है. ध्यान देने वाली त्रुटि बार-बार रूपांतरण है: फ़्रेम से मिलीसेकंड तक ली गई फ़ाइल, एक अलग दर पर फ़्रेम पर वापस और फिर से आगे बढ़ने पर हर बार एक राउंडिंग जमा होती है, और वे त्रुटियां रद्द नहीं होती हैं। किसी फ़ाइल को कई टूल से गुज़रने के बजाय आधिकारिक स्रोत से एक बार कन्वर्ट करें।
कार्यान्वित उदाहरण: 25 एफपीएस पर एक क्यू और 29.97 ड्रॉप-फ्रेम पर - दोनों को मिलीसेकंड में परिवर्तित करना और तुलना करना
एक मिनट तीस सेकंड और बारह फ्रेम पर एक संकेत लें। पच्चीस फ्रेम प्रति सेकंड पर, बारह फ्रेम एक सेकंड का बारह पच्चीसवां हिस्सा है, जो बिल्कुल चार सौ अस्सी मिलीसेकंड है, इसलिए तत्काल नब्बे हजार चार सौ अस्सी मिलीसेकंड है।
29.97 ड्रॉप-फ़्रेम पर एक ही लेबल एक अलग इंस्टेंट है। फ़्रेमों की गिनती करें: नाममात्र तीस पर नब्बे सेकंड दो हजार सात सौ, प्लस बारह, शून्य से पहले मिनट में गिराए गए दो लेबल देता है, जो दो हजार सात सौ दस फ्रेम होता है। तीस हजार को एक हजार एक से अधिक की वास्तविक दर से विभाजित करें और तत्काल लगभग नब्बे हजार चार सौ चौबीस मिलीसेकंड है। दोनों टाइमकोड लगभग समान दिखते हैं और उनमें लगभग छप्पन मिलीसेकंड का अंतर होता है, जो समीक्षा से बचने के लिए काफी छोटा है और एक तंग संकेत पर दिखाई देने के लिए काफी बड़ा है।
इसमें क्या शामिल नहीं है - 99 से अधिक घंटे, नकारात्मक समय और कंटेनर मेटाडेटा में टाइमकोड
यह एक उपशीर्षक फ़ाइल में मौजूद टाइमकोड नोटेशन को कवर करता है। यह निन्यानबे से अधिक घंटे के फ़ील्ड को कवर नहीं करता है, जिसे कुछ सिस्टम बीते हुए समय के बजाय रील पहचान के लिए उपयोग करते हैं, और यह नकारात्मक समय को कवर नहीं करता है, जिसे कोई भी उपशीर्षक प्रारूप व्यक्त नहीं कर सकता है; एक बदलाव जो एक का उत्पादन करेगा उसे शून्य पर क्लैंप किया गया है।
कंटेनर मेटाडेटा में संग्रहीत टाइमकोड भी दायरे से बाहर है। एक वीडियो फ़ाइल में एक प्रारंभ टाइमकोड हो सकता है जो उसके अंदर सब कुछ ऑफसेट करता है, इसलिए एक उपशीर्षक फ़ाइल जो प्रोग्राम के विरुद्ध सही है, फ़ाइल के विरुद्ध गलत दिखाई दे सकती है, और उपशीर्षक टाइमस्टैम्प की जांच करने पर कोई भी इसे प्रकट नहीं करेगा।
टेकअवे: जानें कि आप कौन सी घड़ी पढ़ रहे हैं - उपशीर्षक टूलकिट SRT और WebVTT टाइमकोड के बीच कैसे परिवर्तित होता है
जानें कि आप कौन सी घड़ी पढ़ रहे हैं। अल्पविराम और बिंदु अलग-अलग पार्सर्स के लिए लिखे गए समान मान हैं, और उनके बीच कन्वर्ट करने से विराम चिह्न बदलना चाहिए और कुछ नहीं। फ़्रेम गणना एक अलग प्रकार की संख्या है, जो इसकी दर के बिना अर्थहीन होती है और जब दर ड्रॉप-फ़्रेम होती है तो भ्रामक होती है।
टूलकिट के साथ SRT और WebVTT के बीच कन्वर्ट करें और पहले और बाद के टाइमस्टैम्प की तुलना करें: विभाजक बदलना चाहिए और अंक नहीं। यदि कोई संख्या स्थानांतरित हो जाती है, तो फ़ाइल कहीं फ़्रेम-आधारित चरण से गुज़रती है, और वह जांच के लिए रूपांतरण है।