TTML को LRC में बदलें
या सबटाइटल टेक्स्ट पेस्ट करें
यह रूपांतरण क्या बदलता है
5 चीज़ें छूटती हैं या फ़ैसला माँगती हैं
- टाइमिंग
क्यू के अंत समय (आउटपुट फ़ॉर्मैट केवल यह रखता है कि क्यू कब शुरू होता है)
- स्टाइलिंग
सारी स्टाइलिंग (बोल्ड, इटैलिक, रंग, आउटलाइन, छाया)
- स्थान
स्क्रीन पर स्थान (हर क्यू डिफ़ॉल्ट जगह पर लौट आता है)
- सटीकता
टाइमिंग की सटीकता — आउटपुट की घड़ी मोटी है, इसलिए हर टाइमस्टैम्प निकटतम 10 ms में गोल किया जाता है
- फ़ॉर्मैट-विशिष्ट सामग्री
वह सामग्री जो स्रोत फ़ॉर्मैट अपने क्यू के बाहर रखता है (क्यू से बाहर के ब्लॉक, हेडर टेक्स्ट, प्रति-क्यू सेटिंग, टिप्पणी की गई घटनाएँ) — लक्ष्य फ़ॉर्मैट में उसके लिए कोई जगह नहीं
यह सूची इन दोनों फ़ॉर्मैट के क्षमता मैट्रिक्स से आती है, आपकी लोड की गई उस फ़ाइल से नहीं। कोई खास फ़ाइल ज़्यादा खो सकती है अगर वह ऐसी सुविधाएँ इस्तेमाल करती हो जिन्हें फ़ॉर्मैट अनुमति देता है पर मैट्रिक्स मॉडल नहीं करता।
TTML (Timed Text) और LRC Lyrics दोनों सबटाइटल रखते हैं, पर उनका ढाँचा अलग है; यह पेज एक को दूसरे में बदलता है। TTML एक XML दस्तावेज़ है जिसका <head> नामित स्टाइल और region रखता है, और <p> तत्व cue बनते हैं।
जो नहीं बचता: cue के अंत समय (लक्ष्य केवल शुरुआत रखता है), सारी स्टाइलिंग (बोल्ड, इटैलिक, रंग, आउटलाइन, छाया), स्क्रीन पर स्थिति (हर cue डिफ़ॉल्ट जगह पर लौटती है), समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट)। सिर्फ़ शुरुआत बचती है; अंत अगली पंक्ति तक माना जाता है; TTML के रंग, आउटलाइन, छाया और मार्जिन LRC में कोई स्तंभ नहीं पाते; TTML का {\pos(320,240)} LRC में कोई जगह नहीं पाता और हर cue डिफ़ॉल्ट स्थान पर लौटती है। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।
LRC Lyrics का नतीजा .lrc फ़ाइल के रूप में मिलता है; हर पंक्ति [mm:ss.xx] से शुरू होती है और अंत नहीं लिखा जाता। बैच में डाली गई हर फ़ाइल अलग से संसाधित होती है, बीच में रोकने पर बाकी नहीं चलतीं, और अंत में सब एक ZIP में मिलती हैं। फ़ाइल आपके ब्राउज़र से बाहर नहीं जाती।
उदाहरण
एक सामान्य TTML फ़ाइल, LRC में बदली गई
इनपुट
<?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>
आउटपुट
[00:01.00]Hello there.
[00:03.50]How are you?
[00:03.50]Fine, thanks.
इस आउटपुट में छूटा: अंत समय, स्टाइलिंग, स्क्रीन स्थिति, समय सटीकता, फ़ॉर्मैट-विशिष्ट सामग्री। बाकी सब पंक्ति-दर-पंक्ति मेल खाता है।
TTML से LRC: वही रूपांतरण एक कठिन इनपुट पर
इनपुट
<?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 & Jerry.</p>
</div>
</body>
</tt>
आउटपुट
[00:01.50]Loaded from an offset and a duration.
[00:04.00]A coarser clock spelling.
[00:07.00]Frames, at 25fps.
[00:09.00]Half-open and Tom & Jerry.
असली TTML फ़ाइलों में BOM, मिश्रित पंक्ति-अंत, खाली क्षेत्र या बिगड़ा समय-कोड मिलता है। ऊपर की साफ़ मिसाल से मिलाकर देखिए कि पार्सर कितना माफ़ करता है और क्या रिपोर्ट करता है।
अक्सर पूछे जाने वाले सवाल
TTML की cue के अंत समय का LRC में क्या होता है?
TTML हर cue के लिए शुरुआत और अंत दोनों रखता है, पर LRC सिर्फ़ शुरुआती समय [mm:ss.xx] में लिखता है। इसलिए 00:00:04.000 वाला क्षण [00:04.00] बन जाता है और अंत समय गिर जाता है: गीत खिलाड़ी पंक्ति को अगली पंक्ति तक दिखाता रहता है।
TTML की cue के बाहर की सामग्री LRC फ़ाइल में बचती है?
TTML की वह सामग्री cue मॉडल के बाहर रहती है — <styling> में tts:color जैसे नामित नियम हैं, <layout> में tts:origin व tts:extent वाले region, और <p> उन्हें नाम से पुकारता है। LRC में उसके लिए कोई अनुभाग, स्तंभ या विशेषता नहीं है, इसलिए वह गिर जाती है और रिपोर्ट में अलग से गिनी जाती है; LRC का अपना हेडर उसे दोबारा नहीं बना सकता।
TTML की कौन-सी चीज़ें LRC में नहीं जातीं?
इस दिशा में 5 तरह की जानकारी गिरती है: cue के अंत समय (लक्ष्य केवल शुरुआत रखता है), सारी स्टाइलिंग (बोल्ड, इटैलिक, रंग, आउटलाइन, छाया), स्क्रीन पर स्थिति (हर cue डिफ़ॉल्ट जगह पर लौटती है), समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है), cue मॉडल के बाहर रखी स्रोत की सामग्री (गैर-cue ब्लॉक, हेडर पाठ, प्रति-cue सेटिंग, टिप्पणी-किए इवेंट)। मिसाल के लिए, TTML का अंत समय LRC में लिखा ही नहीं जाता, इसलिए cue अगली पंक्ति तक खींची जाती है। यह सूची आपकी फ़ाइल डालने से पहले ही दिखती है, और फ़ाइल आने के बाद उसमें बताया जाता है कि उसमें से कितनी चीज़ें वाकई मौजूद थीं।
TTML से LRC बनाने पर हर पंक्ति किस रूप में लिखी जाती है?
LRC में हर TTML cue [mm:ss.xx] समय और उसके बाद पाठ की पंक्ति बनती है, जैसे [00:04.00] पाठ। TTML का अंत समय नहीं लिखा जाता, क्योंकि LRC उसे अगली पंक्ति से मानता है।
TTML की बहु-पंक्ति cue LRC में कैसे रहती है?
cues शुरुआती समय के क्रम में लिखी जाती हैं, इसलिए TTML में अगर कोई cue क्रम से बाहर थी तो LRC में वह अपनी सही जगह पर लौट आती है। एक cue के भीतर की पंक्तियाँ अलग नहीं होतीं, क्योंकि दोनों फ़ॉर्मैट हार्ड लाइन-ब्रेक रख सकते हैं।
अगर बाद में LRC को TTML में बदलना हो तो क्या ध्यान रखें?
नहीं। LRC से TTML की उलटी दिशा में भी अंत समय अनुमान से बनाए जाते हैं (स्रोत उन्हें नहीं रखता) जैसी जानकारी गिरती है, क्योंकि दोनों फ़ॉर्मैट अलग-अलग चीज़ें रखते हैं और उलटी दिशा की अपनी कमियाँ हैं। और इस दिशा में TTML से LRC में जो छूटा — जैसे TTML का अंत समय LRC में लिखा ही नहीं जाता, इसलिए cue अगली पंक्ति तक खींची जाती है — वह LRC में कहीं दर्ज नहीं है, इसलिए किसी भी उलटे रूपांतरण से उसे दोबारा नहीं बनाया जा सकता।