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

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

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

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

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

  • कराओके

    कराओके टाइमिंग (प्रति-अक्षर हाइलाइट)

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

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

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

यह पेज Advanced SubStation Alpha (ASS) फ़ाइल को TTML (Timed Text) में बदलता है। ASS एक स्क्रिप्ट है: [Script Info], [V4+ Styles] की स्टाइल-तालिका, और Dialogue पंक्तियाँ जिनमें समय 0:00:04.00 तथा {\i1}, {\pos(320,240)} और \k जैसे ओवरराइड कोड होते हैं। TTML एक XML दस्तावेज़ है जिसका <head> नामित स्टाइल और region रखता है, और <p> तत्व cue बनते हैं।

जो नहीं बचता: कराओके समय (अक्षर-दर-अक्षर हाइलाइट), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट)। कराओके की अक्षर-दर-अक्षर अवधि चली जाती है, इसलिए TTML पूरा cue एक साथ दिखाता है; [Script Info], [Fonts]/[Graphics] की सामग्री और Comment: पंक्तियाँ TTML में नहीं जाते, क्योंकि वहाँ उनके लिए कोई अनुभाग नहीं है। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।

TTML (Timed Text) का आउटपुट .ttml फ़ाइल है और उसमें XML ढाँचा, <head> की <styling>/<layout> तालिकाएँ और <p> cue बनती हैं। चाहे एक फ़ाइल डालें या पूरी सीरीज़, सब कुछ एक-एक करके चलता है, बीच में रोका जा सकता है, और सारे नतीजे एक ZIP में मिलते हैं। कोई सर्वर नहीं, कोई अपलोड नहीं — सब कुछ आपके ब्राउज़र में।

उदाहरण

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

इनपुट

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

आउटपुट

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:05.000" end="00:00:08.500"><span tts:fontStyle="italic">Italic</span> and <span tts:fontWeight="bold">bold</span> text.</p>
<p begin="00:00:09.000" end="00:00:12.000">Positioned</p>
<p begin="00:00:13.000" end="00:00:16.000">karaoke</p>
<p begin="00:00:17.000" end="00:00:20.000">Line one<br/>Line two</p>
<p begin="00:00:21.000" end="00:00:24.000">Top left</p>  </body>
</tt>

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

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

इनपुट

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

आउटपुट

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000">Hello, world</p>
<p begin="00:00:05.000" end="00:00:08.000">{\fad(300,300)}Unmodelled override</p>
<p begin="00:00:09.000" end="00:00:12.000">Both, wrong order</p>
<p begin="00:00:13.000" end="00:00:16.500">One decimal centisecond</p>
<p begin="00:00:17.000" end="00:00:20.000">Soft<br/>break</p>  </body>
</tt>

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

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

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

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

ASS का [Script Info], [Fonts]/[Graphics] की सामग्री और Comment: पंक्तियाँ TTML में कहाँ जाता है?

ASS की वह सामग्री cue मॉडल के बाहर रहती है — [Script Info] वैश्विक सेटिंग है, [Fonts] व [Graphics] एम्बेडेड बाइट हैं, और Comment: ऐसे इवेंट हैं जो कभी दिखाए नहीं जाते। TTML में उसके लिए कोई अनुभाग, स्तंभ या विशेषता नहीं है, इसलिए वह गिर जाती है और रिपोर्ट में अलग से गिनी जाती है; TTML का अपना हेडर उसे दोबारा नहीं बना सकता।

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

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

ASS से TTML बनाने पर <head> में क्या आता है?

TTML में हर ASS cue एक <p> तत्व बनती है, और <head> में <styling> व <layout> तालिकाएँ बनाई जाती हैं। समय 00:00:04.000 रूप में जाता है और ASS की पंक्तियाँ <p> के भीतर <span> बनकर रहती हैं।

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

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

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

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

संबंधित टूल