सामग्री पर जाएँ
Free Subtitle Converter
भाषा
कलर थीम
हमारा समर्थन करें

XML सबटाइटल की जानकारी: TTML, DFXP और IMSC

TTML, DFXP और IMSC सबटाइटल फ़ाइलें क्या हैं, उनकी टाइमिंग कैसे काम करती है, और इस साइट का कन्वर्टर उनसे ठीक-ठीक क्या पढ़ता है और क्या छोड़ता है।

Syed Peera Saheb द्वारा · प्रकाशित

छोटा जवाब

TTML, DFXP और IMSC, W3C की Timed Text Markup Language पर बनी XML सबटाइटल फ़ाइलें हैं। DFXP, TTML का पुराना नाम है, और IMSC उसकी एक प्रोफ़ाइल है जो स्ट्रीमिंग और ब्रॉडकास्ट डिलीवरी में इस्तेमाल होती है।

अगर आपके पास .ttml, .dfxp या .xml सबटाइटल फ़ाइल है और आपको SRT या VTT चाहिए, तो इस साइट का कन्वर्टर उसका टेक्स्ट, टाइमिंग, लाइन ब्रेक और इटैलिक, बोल्ड व अंडरलाइन पढ़ सकता है। यह पोज़िशन, रंग या फ़ॉन्ट नहीं रखता, और कैप्शन वाली हर XML फ़ाइल नहीं पढ़ता।

एक परिवार, कई नाम

TTML टाइम्ड टेक्स्ट के लिए W3C का एक स्टैंडर्ड है। जब इसे लिखा जा रहा था, तब इसे DFXP, यानी Distribution Format Exchange Profile, कहा जाता था, और TTML 1 स्पेसिफ़िकेशन अब भी बताता है कि पुराना नाम प्रोफ़ाइल के नामों और फ़ाइल एक्सटेंशन में बचा हुआ है। व्यवहार में .dfxp फ़ाइल और .ttml फ़ाइल एक ही तरह का दस्तावेज़ रखती हैं। TTML2 दूसरा संस्करण है और इसमें और सुविधाएँ जुड़ती हैं।

TTML बड़ा है, इसलिए इंडस्ट्री प्रोफ़ाइल तय करती हैं: ऐसे उपसमूह जो बताते हैं कि फ़ाइल कौन-सी सुविधाएँ इस्तेमाल कर सकती है। IMSC, यानी Internet Media Subtitles and Captions प्रोफ़ाइल, सबसे आम में से एक है। इसके मौजूदा संस्करण एक सिर्फ़-टेक्स्ट प्रोफ़ाइल और एक सिर्फ़-इमेज प्रोफ़ाइल तय करते हैं। EBU-TT यूरोपीय ब्रॉडकास्टर इस्तेमाल करते हैं, और SMPTE-TT अमेरिकी ब्रॉडकास्टिंग में इस्तेमाल होता है। ये सभी <tt> रूट एलिमेंट से शुरू होते हैं।

TTML फ़ाइल कैसी दिखती है

TTML दस्तावेज़ में एक head और एक body होता है। head में स्टाइल, जैसे फ़ॉन्ट या रंग, और रीजन, यानी स्क्रीन के हिस्से, तय किए जा सकते हैं। body में पैराग्राफ़ यानी <p> एलिमेंट होते हैं, हर एक में शुरुआत और अंत का समय और कैप्शन का टेक्स्ट। <br/> नई लाइन शुरू करता है, और <span> एलिमेंट किसी लाइन के हिस्सों को स्टाइल या टाइम करते हैं।

एक छोटी TTML फ़ाइल
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xmlns:ttp="http://www.w3.org/ns/ttml#parameter" ttp:tickRate="10000000">
  <head>
    <styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
    <layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
  </head>
  <body>
    <div>
      <p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
    </div>
  </body>
</tt>

TTML टाइमिंग कैसे काम करती है

TTML में समय लिखने के कई तरीक़े हैं। क्लॉक टाइम 00:00:01.200 जैसे दिखते हैं, या अंत में फ़्रेम नंबर के साथ 00:00:01:05। ऑफ़सेट टाइम एक इकाई वाली संख्या होते हैं: 1.2s, 1200ms, फ़्रेम के लिए 30f, या टिक के लिए 12000000t। स्ट्रीमिंग सेवाओं की फ़ाइलों में टिक आम हैं; रूट एलिमेंट का tickRate बताता है कि कितने टिक का एक सेकंड होता है, इसलिए 10,000,000 के टिक रेट पर 12000000t 1.2 सेकंड है।

समय सापेक्ष भी हो सकते हैं। किसी div का अपना begin समय हो सकता है जो उसके अंदर के पैराग्राफ़ में जुड़ता है, कोई पैराग्राफ़ अंत समय की जगह अवधि दे सकता है, और बिना समय वाला पैराग्राफ़ उन्हें अपने span से ले सकता है। इसीलिए सरल खोज-और-बदल टूल अक्सर TTML टाइमिंग ग़लत कर देते हैं।

यह साइट क्या पढ़ती है

कन्वर्टर TTML को उसके <tt> रूट एलिमेंट से पहचानता है, फ़ाइल एक्सटेंशन चाहे जो हो, इसलिए .ttml, .dfxp और .xml फ़ाइलें सब खुलती हैं। ऊपर का उदाहरण 1.2 से 3.5 सेकंड का दो लाइनों वाला एक कैप्शन बनता है, जिसकी दूसरी लाइन इटैलिक में है। विस्तार से, यह पढ़ता है:

  • अंश या फ़्रेम वाले क्लॉक टाइम, और घंटे, मिनट, सेकंड, मिलीसेकंड, फ़्रेम और टिक में ऑफ़सेट टाइम।
  • रूट एलिमेंट पर frameRate, frameRateMultiplier, subFrameRate और tickRate सेटिंग। टिक रेट न हो तो यह फ़्रेम रेट से एक निकालता है, या प्रति सेकंड एक टिक मानता है, जैसा स्पेसिफ़िकेशन बताता है।
  • पैराग्राफ़ और span पर begin, end और dur, जिनमें बाहरी body और div के begin समय जोड़े जाते हैं।
  • <br/> के रूप में लिखे लाइन ब्रेक।
  • इटैलिक, बोल्ड और अंडरलाइन, चाहे वे सीधे किसी एलिमेंट पर लगाए गए हों या किसी नामित स्टाइल के ज़रिए।
  • नेमस्पेस प्रीफ़िक्स वाले एलिमेंट, जैसे EBU-TT और कुछ IMSC फ़ाइलों में <tt:p>। मेटाडेटा, जैसे एडिटरों के लिए नोट, छोड़ दिया जाता है और कभी कैप्शन टेक्स्ट नहीं बनता।

यह क्या छोड़ता है

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

कुछ XML कैप्शन फ़ाइलें TTML होती ही नहीं, और पेज बताता है कि वह उन्हें सबटाइटल के रूप में नहीं पहचानता। इनमें YouTube का अपना timedtext XML भी शामिल है, जिसका रूट एलिमेंट <tt> की बजाय <timedtext> या <transcript> होता है। इमेज पर आधारित IMSC फ़ाइलें, जो टेक्स्ट की तस्वीरें सहेजती हैं, उनमें पढ़ने के लिए कोई टेक्स्ट नहीं होता। SMPTE ड्रॉप-फ़्रेम टाइमकोड जैसे असामान्य टाइमिंग मोड को ख़ास तरह से नहीं संभाला जाता, इसलिए प्रीव्यू के अंत के पास के कुछ कैप्शन वीडियो से मिलाकर देखें।

यह क्या लिखता है

जब आप TTML या DFXP में बदलते हैं, तो कन्वर्टर एक सरल TTML 1 दस्तावेज़ लिखता है: हर कैप्शन मिलीसेकंड में begin और end क्लॉक टाइम वाला एक पैराग्राफ़ बनता है, लाइन ब्रेक <br/> बन जाते हैं, और इटैलिक, बोल्ड और अंडरलाइन मेल खाते स्टाइलिंग एट्रिब्यूट वाले span बन जाते हैं। स्टाइल या रीजन वाला कोई head नहीं होता, इसलिए प्लेयर अपना डिफ़ॉल्ट रूप इस्तेमाल करते हैं। DFXP विकल्प यही दस्तावेज़ .dfxp एक्सटेंशन के साथ लिखता है।

रूट एलिमेंट पर भाषा एट्रिब्यूट ख़ाली छोड़ा जाता है, क्योंकि कन्वर्टर नहीं जान सकता कि आपके सबटाइटल किस भाषा में हैं। कुछ प्लेटफ़ॉर्म को यह ज़रूरी होता है। अगर आपके प्लेटफ़ॉर्म को है, तो अपलोड करने से पहले फ़ाइल को टेक्स्ट एडिटर में खोलें और xml:lang में en या es जैसा कोड भरें।

उदाहरण से कन्वर्टर द्वारा लिखी गई फ़ाइल
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="">
  <body>
    <div>
      <p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
    </div>
  </body>
</tt>

TTML या DFXP को SRT या VTT में बदलना

कन्वर्ट करने में कुछ सेकंड लगते हैं, और फ़ाइल आपके डिवाइस पर ही रहती है।

  • TTML से SRT या DFXP से SRT कन्वर्टर, या मुख्य कन्वर्टर खोलें, और अपनी .ttml, .dfxp या .xml फ़ाइल चुनें।
  • सारांश देखें। यह बताता है कि कितने कैप्शन मिले और क्या किसी पैराग्राफ़ की टाइमिंग पढ़ी नहीं जा सकी।
  • आउटपुट फ़ॉर्मैट चुनें, जैसे SRT या VTT, और प्रीव्यू देख लें।
  • नतीजे को अपने वीडियो के साथ चलाएँ और शुरुआत के पास के एक कैप्शन और अंत के पास के एक कैप्शन की तुलना करें, कहीं फ़ाइल में ऐसा टाइमिंग मोड न हो जिसे कन्वर्टर नहीं संभालता।
  • फ़ाइल डाउनलोड करें। यह UTF-8 में सेव होती है।

कब TTML इस्तेमाल करें, और कब नहीं

TTML या DFXP तब इस्तेमाल करें जब कोई प्लेटफ़ॉर्म, स्ट्रीमिंग सेवा या ब्रॉडकास्टर इसे माँगे; उनके डिलीवरी स्पेसिफ़िकेशन आम तौर पर किसी प्रोफ़ाइल का नाम बताते हैं, और सादी TTML 1 फ़ाइल उस पर खरी उतरे भी और न भी उतरे। प्लेयर, एडिटर और वीडियो प्लेटफ़ॉर्म में रोज़ के इस्तेमाल के लिए SRT या WebVTT आसान और ज़्यादा सपोर्ट वाले हैं। अगर आपको TTML फ़ाइल मिलती है और आप सिर्फ़ उसे देखना या एडिट करना चाहते हैं, तो उसे SRT में बदलें।

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

आम सवाल

क्या DFXP और TTML एक ही हैं? व्यावहारिक रूप से, हाँ। DFXP वह नाम था जो TTML के ड्राफ़्ट के दौरान इस्तेमाल होता था, और कन्वर्टर दोनों को एक ही तरह संभालता है।

मेरी .xml फ़ाइल क्यों कहती है कि यह सबटाइटल फ़ाइल नहीं है? या तो यह TTML नहीं है, जैसे YouTube timedtext XML, या इसमें <tt> रूट एलिमेंट नहीं है। कन्वर्टर ऐसी फ़ाइलें नहीं पढ़ता।

क्या कन्वर्ट की गई SRT हर कैप्शन की पोज़िशन बनाए रखेगी? नहीं। SRT में कैप्शन रखने का कोई मानक तरीक़ा नहीं है, और कन्वर्टर TTML रीजन को किसी भी फ़ॉर्मैट में नहीं ले जाता।

सबटाइटल कन्वर्टर खोलें
मुझे एक कॉफ़ी पिलाएँ