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

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

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

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

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

  • सटीकता

    टाइमिंग की सटीकता — आउटपुट की घड़ी मोटी है, इसलिए हर टाइमस्टैम्प निकटतम 10 ms में गोल किया जाता है

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

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

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

TTML (Timed Text) और Advanced SubStation Alpha (ASS) दोनों सबटाइटल रखते हैं, पर उनका ढाँचा अलग है; यह पेज एक को दूसरे में बदलता है। TTML एक XML दस्तावेज़ है जिसका <head> नामित स्टाइल और region रखता है, और <p> तत्व cue बनते हैं।

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

Advanced SubStation Alpha (ASS) का नतीजा .ass फ़ाइल के रूप में मिलता है; हेडर, [V4+ Styles] स्टाइल-तालिका और Dialogue पंक्तियाँ साथ आती हैं। बैच में डाली गई हर फ़ाइल अलग से संसाधित होती है, बीच में रोकने पर बाकी नहीं चलतीं, और अंत में सब एक ZIP में मिलती हैं। फ़ाइल आपके ब्राउज़र से बाहर नहीं जाती।

उदाहरण

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

इनपुट

<?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>

आउटपुट

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello {\i1}there{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

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

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

इनपुट

<?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>

आउटपुट

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.50,0:00:03.50,Default,,0,0,0,,Loaded from an offset and a duration.
Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,A coarser clock spelling.
Dialogue: 0,0:00:07.00,0:00:08.48,Default,,0,0,0,,Frames, at 25fps.
Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,{\c&H000000FF&}Half-open{\c} and Tom &amp; Jerry.

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

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

TTML से ASS तक समय कैसे पहुँचता है?

TTML इसे 00:00:04.000 लिखता है और ASS इसे 0:00:04.00 लिखता है; क्षण वही रहता है, सिर्फ़ विराम-चिह्न और इकाई बदलती है। चूँकि ASS की घड़ी 10 ms की है और TTML की 1 ms की, हर समय निकटतम 10 ms तक पूर्णांकित होता है — 00:00:04.000 से 0:00:04.00।

TTML की cue के बाहर की सामग्री ASS फ़ाइल में बचती है?

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

TTML और ASS के बीच कौन-सा अंतर सबसे ज़्यादा मायने रखता है?

इस दिशा में 2 तरह की जानकारी गिरती है: समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट)। मिसाल के लिए, TTML का 00:00:04,001 ASS में 0:00:04.00 बनता है, यानी हर समय 10 ms के गुणक तक पूर्णांकित होता है। यह सूची आपकी फ़ाइल डालने से पहले ही दिखती है, और फ़ाइल आने के बाद उसमें बताया जाता है कि उसमें से कितनी चीज़ें वाकई मौजूद थीं।

TTML से ASS बनाने पर स्टाइल-तालिका कहाँ से आती है?

ASS में हर TTML cue एक Dialogue पंक्ति बनती है और किसी स्टाइल की ओर इशारा करती है। चूँकि TTML में स्टाइल-तालिका नहीं होती, एक Default स्टाइल बनाई जाती है — Arial, आकार 20, सफ़ेद पाठ काली आउटलाइन के साथ — और सारी पंक्तियाँ उसी पर जाती हैं। इसे बाद में किसी भी ASS एडिटर में बदला जा सकता है।

TTML की बहु-पंक्ति cue ASS में कैसे रहती है?

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

क्या ASS से TTML में वापस बदलने पर छूटी जानकारी लौट आती है?

नहीं। ASS से TTML की उलटी दिशा में भी कराओके समय (अक्षर-दर-अक्षर हाइलाइट), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट) जैसी जानकारी गिरती है, क्योंकि दोनों फ़ॉर्मैट अलग-अलग चीज़ें रखते हैं और उलटी दिशा की अपनी कमियाँ हैं। और इस दिशा में TTML से ASS में जो छूटा — जैसे TTML का 00:00:04,001 ASS में 0:00:04.00 बनता है, यानी हर समय 10 ms के गुणक तक पूर्णांकित होता है — वह ASS में कहीं दर्ज नहीं है, इसलिए किसी भी उलटे रूपांतरण से उसे दोबारा नहीं बनाया जा सकता।

संबंधित टूल