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

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

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

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

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

  • स्टाइलिंग

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

  • कराओके

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

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

इस पेज पर JSON फ़ाइल डालिए और SMI फ़ाइल पाइए। JSON में हर cue के समय 4000 जैसे पूर्णांक मिलीसेकंड हैं, और styles तालिका तथा tags सरणी सब कुछ संरचित रूप में रहता है। SMI में <SYNC Start=4000> जैसे टैग बताते हैं कि उस क्षण से क्या दिखेगा, और <STYLE> ब्लॉक रंग-फ़ॉन्ट तय करता है।

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

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

उदाहरण

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

इनपुट

{
  "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"
    }
  ]
}

आउटपुट

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>Hello world.<br>Second line.
<SYNC Start=2000>
<P>&nbsp;
<SYNC Start=2500>
<P>Plain line.<br><i>Styled</i> line.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=4500>
<P>Roger: I am here.
<SYNC Start=6000>
<P>&nbsp;
</BODY>
</SAMI>

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

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

इनपुट

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

आउटपुट

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>First.
<SYNC Start=1000>
<P>&nbsp;
<SYNC Start=1000>
<P>Second.
<SYNC Start=2000>
<P>&nbsp;
<SYNC Start=2000>
<P>Third.
<SYNC Start=3000>
<P>&nbsp;
</BODY>
</SAMI>

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

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

JSON के क्षण SMI की घड़ी में कैसे अनुवादित होते हैं?

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

JSON की पूरी स्टाइल-तालिका SMI में क्यों नहीं आती?

SMI सिर्फ़ बोल्ड, इटैलिक, अंडरलाइन और रंग जैसी इनलाइन स्टाइलिंग रखता है, इसलिए JSON का बोल्ड-इटैलिक बच जाता है। फ़ॉन्ट, आकार, आउटलाइन, छाया और मार्जिन नहीं आते — SMI में उनके लिए कोई स्तंभ नहीं है।

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

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

SMI में JSON की cue का ढाँचा क्या होता है?

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

JSON की cues का क्रम SMI में बदलता है या नहीं?

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

SMI से JSON लौटने पर क्या नया छूट सकता है?

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

संबंधित टूल