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

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

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

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

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

  • कराओके

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

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

SubtitleMatrix JSON और TTML (Timed Text) दोनों सबटाइटल रखते हैं, पर उनका ढाँचा अलग है; यह पेज एक को दूसरे में बदलता है। JSON में हर cue के समय 4000 जैसे पूर्णांक मिलीसेकंड हैं, और styles तालिका तथा tags सरणी सब कुछ संरचित रूप में रहता है।

जो नहीं बचता: कराओके समय (अक्षर-दर-अक्षर हाइलाइट)। कराओके की अक्षर-दर-अक्षर अवधि चली जाती है, इसलिए TTML पूरा cue एक साथ दिखाता है। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।

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

उदाहरण

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

इनपुट

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

आउटपुट

<?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:00.000" end="00:00:02.000">Hello world.<br/>Second line.</p>
<p begin="00:00:02.500" end="00:00:04.000">Plain line.<br/><span tts:fontStyle="italic">Styled</span> line.</p>
<p begin="00:00:04.500" end="00:00:06.000">Roger: I am here.</p>  </body>
</tt>

इस आउटपुट में छूटा: कराओके। बाकी सब पंक्ति-दर-पंक्ति मेल खाता है।

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

इनपुट

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

आउटपुट

<?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:00.000" end="00:00:01.000">First.</p>
<p begin="00:00:01.000" end="00:00:02.000">Second.</p>
<p begin="00:00:02.000" end="00:00:03.000">Third.</p>  </body>
</tt>

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

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

JSON के 4000 जैसे समय TTML में किस रूप में लिखे जाते हैं?

JSON का 4000 मिलीसेकंड TTML में 00:00:04.000 बनता है; दोनों में क्षण एक ही रहता है। कोई पूर्णांकन नहीं होता, क्योंकि TTML की घड़ी JSON से महीन या बराबर है।

JSON के ओवरराइड कोड TTML में क्या बनते हैं?

दोनों पूरी स्टाइलिंग रखते हैं, इसलिए JSON की स्टाइल-तालिका और प्रति-cue ज़ोर TTML के अपने रूप में लिखे जाते हैं — TTML में वे नामित स्टाइल या संरचित tags बनते हैं, कच्चे कोड नहीं। फ़ॉन्ट, रंग, आउटलाइन और मार्जिन तक बचते हैं।

JSON की कौन-सी चीज़ें TTML में नहीं जातीं?

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

TTML में JSON की हर cue किस तत्व में बदलती है?

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

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

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

TTML से JSON की उलटी दिशा उतनी ही सुरक्षित है?

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

संबंधित टूल