मुख्य सामग्री पर जाएँ
SubtitleMatrix

TTML को SMI में बदलें

या सबटाइटल टेक्स्ट पेस्ट करें

यह रूपांतरण क्या बदलता है

2 चीज़ें छूटती हैं या फ़ैसला माँगती हैं

  • स्टाइलिंग

    बोल्ड और इटैलिक के अलावा सारी स्टाइलिंग (रंग, आउटलाइन, छाया, मार्जिन)

  • फ़ॉर्मैट-विशिष्ट सामग्री

    वह सामग्री जो स्रोत फ़ॉर्मैट अपने क्यू के बाहर रखता है (क्यू से बाहर के ब्लॉक, हेडर टेक्स्ट, प्रति-क्यू सेटिंग, टिप्पणी की गई घटनाएँ) — लक्ष्य फ़ॉर्मैट में उसके लिए कोई जगह नहीं

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

यह पेज TTML (Timed Text) फ़ाइल को SAMI (SMI) में बदलता है। TTML एक XML दस्तावेज़ है जिसका <head> नामित स्टाइल और region रखता है, और <p> तत्व cue बनते हैं। SMI में <SYNC Start=4000> जैसे टैग बताते हैं कि उस क्षण से क्या दिखेगा, और <STYLE> ब्लॉक रंग-फ़ॉन्ट तय करता है।

जो नहीं बचता: बोल्ड और इटैलिक के अलावा बाकी स्टाइलिंग (रंग, आउटलाइन, छाया, मार्जिन), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट)। TTML के रंग, आउटलाइन और मार्जिन SMI में नहीं जाते, हालाँकि बोल्ड और इटैलिक बच जाते हैं; XML prolog और <head> की <styling>, <layout> व <metadata> तालिकाएँ SMI में नहीं जाते, क्योंकि वहाँ उनके लिए कोई अनुभाग नहीं है। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।

SAMI (SMI) का आउटपुट .smi फ़ाइल है और उसमें पूरा <SAMI> ढाँचा, <STYLE> अनुभाग और <SYNC> टैग बनते हैं। चाहे एक फ़ाइल डालें या पूरी सीरीज़, सब कुछ एक-एक करके चलता है, बीच में रोका जा सकता है, और सारे नतीजे एक ZIP में मिलते हैं। कोई सर्वर नहीं, कोई अपलोड नहीं — सब कुछ आपके ब्राउज़र में।

उदाहरण

एक सामान्य TTML फ़ाइल, SMI में बदली गई

इनपुट

<?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="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

आउटपुट

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello <i>there</i>.
<SYNC Start=3500>
<P>&nbsp;
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>&nbsp;
</BODY>
</SAMI>

इस आउटपुट में छूटा: स्टाइलिंग, फ़ॉर्मैट-विशिष्ट सामग्री। बाकी सब पंक्ति-दर-पंक्ति मेल खाता है।

TTML से SMI: वही रूपांतरण एक कठिन इनपुट पर

इनपुट

<?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:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

आउटपुट

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1500>
<P>Loaded from an offset and a duration.
<SYNC Start=3500>
<P>&nbsp;
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>&nbsp;
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>&nbsp;
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom &amp; Jerry.
<SYNC Start=11000>
<P>&nbsp;
</BODY>
</SAMI>

असली TTML फ़ाइलों में BOM, मिश्रित पंक्ति-अंत, खाली क्षेत्र या बिगड़ा समय-कोड मिलता है। ऊपर की साफ़ मिसाल से मिलाकर देखिए कि पार्सर कितना माफ़ करता है और क्या रिपोर्ट करता है।

अक्सर पूछे जाने वाले सवाल

SMI की घड़ी TTML की तुलना में कितनी सूक्ष्म है?

TTML का 00:00:04.000 SMI में Start=4000 बनता है, क्योंकि SMI मिलीसेकंड को Start=… में रखता है। कोई पूर्णांकन नहीं होता, क्योंकि SMI की घड़ी TTML से महीन या बराबर है।

TTML का XML prolog और <head> की <styling>, <layout> व <metadata> तालिकाएँ SMI में कहाँ जाता है?

TTML की वह सामग्री cue मॉडल के बाहर रहती है — <styling> में tts:color जैसे नामित नियम हैं, <layout> में tts:origin व tts:extent वाले region, और <p> उन्हें नाम से पुकारता है। SMI में उसके लिए कोई अनुभाग, स्तंभ या विशेषता नहीं है, इसलिए वह गिर जाती है और रिपोर्ट में अलग से गिनी जाती है; SMI का अपना हेडर उसे दोबारा नहीं बना सकता।

TTML से SMI में बदलने पर क्या खो जाता है?

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

TTML से SMI बनाने पर <SYNC> टैग कैसे बनते हैं?

SMI में हर TTML cue <SYNC Start=4000> जैसे टैग के भीतर आती है, और पूरा दस्तावेज़ <SAMI><BODY> ढाँचे में लपेटा जाता है। TTML की स्टाइल-तालिका न होने पर एक छोटा डिफ़ॉल्ट <STYLE> ब्लॉक जोड़ा जाता है।

TTML की cues SMI में किस क्रम में आती हैं?

cues शुरुआती समय के क्रम में लिखी जाती हैं, इसलिए TTML में अगर कोई cue क्रम से बाहर थी तो SMI में वह अपनी सही जगह पर लौट आती है। एक cue के भीतर की पंक्तियाँ अलग नहीं होतीं, क्योंकि दोनों फ़ॉर्मैट हार्ड लाइन-ब्रेक रख सकते हैं।

अगर बाद में SMI को TTML में बदलना हो तो क्या ध्यान रखें?

नहीं। SMI से TTML की उलटी दिशा में भी cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट) जैसी जानकारी गिरती है, क्योंकि दोनों फ़ॉर्मैट अलग-अलग चीज़ें रखते हैं और उलटी दिशा की अपनी कमियाँ हैं। और इस दिशा में TTML से SMI में जो छूटा — जैसे TTML की स्टाइल-तालिका का फ़ॉन्ट, आकार और आउटलाइन SMI में किसी स्तंभ से नहीं जुड़ते — वह SMI में कहीं दर्ज नहीं है, इसलिए किसी भी उलटे रूपांतरण से उसे दोबारा नहीं बनाया जा सकता।

संबंधित टूल