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

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

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

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

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

  • टाइमिंग

    क्यू के अंत समय (आउटपुट फ़ॉर्मैट केवल यह रखता है कि क्यू कब शुरू होता है)

  • स्टाइलिंग

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

  • स्थान

    स्क्रीन पर स्थान (हर क्यू डिफ़ॉल्ट जगह पर लौट आता है)

  • कराओके

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

  • सटीकता

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

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

इस पेज पर JSON फ़ाइल डालिए और LRC फ़ाइल पाइए। JSON में हर cue के समय 4000 जैसे पूर्णांक मिलीसेकंड हैं, और styles तालिका तथा tags सरणी सब कुछ संरचित रूप में रहता है। LRC में हर पंक्ति [00:04.00] जैसे कोष्ठक-समय से शुरू होती है; अंत समय नहीं होता और अगली पंक्ति उसे तय करती है।

जो नहीं बचता: cue के अंत समय (लक्ष्य केवल शुरुआत रखता है), सारी स्टाइलिंग (बोल्ड, इटैलिक, रंग, आउटलाइन, छाया), स्क्रीन पर स्थिति (हर cue डिफ़ॉल्ट जगह पर लौटती है), कराओके समय (अक्षर-दर-अक्षर हाइलाइट), समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है)। सिर्फ़ शुरुआत बचती है; अंत अगली पंक्ति तक माना जाता है; JSON के रंग, आउटलाइन, छाया और मार्जिन LRC में कोई स्तंभ नहीं पाते; JSON का {\pos(320,240)} LRC में कोई जगह नहीं पाता और हर cue डिफ़ॉल्ट स्थान पर लौटती है। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।

LRC Lyrics की फ़ाइल .lrc एक्सटेंशन के साथ बनती है; हर पंक्ति [mm:ss.xx] से शुरू होती है और अंत नहीं लिखा जाता। एक फ़ाइल हो या पूरी सीरीज़, कतार एक-एक करके चलती है, बीच में रोकी जा सकती है, और नतीजे एक ZIP में आते हैं। रूपांतरण आपके ब्राउज़र में होता है, इसलिए फ़ाइल कहीं अपलोड नहीं होती।

उदाहरण

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

इनपुट

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

आउटपुट

[ti:Fixture: typical]
[00:00.00]Hello world.
[00:00.00]Second line.
[00:02.50]Plain line.
[00:02.50]Styled line.
[00:04.50]Roger: I am here.

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

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

इनपुट

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

आउटपुट

[00:00.00]First.
[00:01.00]Second.
[00:02.00]Third.

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

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

JSON से LRC बनाने पर cue कब खत्म होगी?

JSON हर cue के लिए शुरुआत और अंत दोनों रखता है, पर LRC सिर्फ़ शुरुआती समय [mm:ss.xx] में लिखता है। इसलिए 4000 वाला क्षण [00:04.00] बन जाता है और अंत समय गिर जाता है: गीत खिलाड़ी पंक्ति को अगली पंक्ति तक दिखाता रहता है।

JSON के फ़ॉन्ट, रंग और आउटलाइन LRC में बचते हैं?

LRC का मॉडल सिर्फ़ समय और पाठ है, इसलिए JSON की स्टाइल-तालिका का कोई अर्थ वहाँ नहीं रहता। फ़ॉन्ट, आकार, रंग, आउटलाइन, छाया और मार्जिन सब गिर जाते हैं; JSON के इनलाइन {i1}/{1} जैसे ज़ोर भी LRC में अपने आप नहीं बनते।

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

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

LRC में JSON की cue के आरंभ का समय कैसे बदलता है?

LRC में हर JSON cue [mm:ss.xx] समय और उसके बाद पाठ की पंक्ति बनती है, जैसे [00:04.00] पाठ। JSON का अंत समय नहीं लिखा जाता, क्योंकि LRC उसे अगली पंक्ति से मानता है।

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

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

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

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

संबंधित टूल