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

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

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

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

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

  • सटीकता

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

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

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

जो नहीं बचता: समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है)। समय निकटतम 10 ms तक पूर्णांकित होता है, जैसे 00:00:04,001 से 0:00:04.00। ये चीज़ें चुपचाप नहीं गिरतीं — फ़ाइल डालने से पहले ही ऊपर की सूची में लिखी रहती हैं।

Advanced SubStation Alpha (ASS) का नतीजा .ass फ़ाइल के रूप में मिलता है; हेडर, [V4+ Styles] स्टाइल-तालिका और Dialogue पंक्तियाँ साथ आती हैं। बैच में डाली गई हर फ़ाइल अलग से संसाधित होती है, बीच में रोकने पर बाकी नहीं चलतीं, और अंत में सब एक ZIP में मिलती हैं। फ़ाइल आपके ब्राउज़र से बाहर नहीं जाती।

उदाहरण

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

इनपुट

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

आउटपुट

[Script Info]
Title: Fixture: typical
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,,,,0,0,,,,,,,,,,,,,,

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}Hello world.\NSecond line.
Dialogue: 0,0:00:02.50,0:00:04.00,Default,,0,0,0,,Plain line.\N{\i1}Styled{\i0} line.
Dialogue: 0,0:00:04.50,0:00:06.00,Default,,0,0,0,,Roger: I am here.

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

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

इनपुट

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

आउटपुट

[Script Info]
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,0,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:00.00,0:00:01.00,Default,,0,0,0,,First.
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,Second.
Dialogue: 0,0:00:02.00,0:00:03.00,Default,,0,0,0,,Third.

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

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

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

JSON का 4000 मिलीसेकंड ASS में 0:00:04.00 बनता है; दोनों में क्षण एक ही रहता है। चूँकि ASS की घड़ी 10 ms की है और JSON की 1 ms की, हर समय निकटतम 10 ms तक पूर्णांकित होता है — 4000 से 0:00:04.00।

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

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

JSON से ASS बनाने की असली कीमत क्या है?

इस दिशा में 1 तरह की जानकारी गिरती है: समय की सूक्ष्मता (लक्ष्य की घड़ी 10 ms की है, इसलिए हर समय पूर्णांकित होता है)। मिसाल के लिए, JSON का 00:00:04,001 ASS में 0:00:04.00 बनता है, यानी हर समय 10 ms के गुणक तक पूर्णांकित होता है। यह सूची आपकी फ़ाइल डालने से पहले ही दिखती है, और फ़ाइल आने के बाद उसमें बताया जाता है कि उसमें से कितनी चीज़ें वाकई मौजूद थीं।

JSON से ASS बनाने पर स्टाइल-तालिका कहाँ से आती है?

ASS में हर JSON cue एक Dialogue पंक्ति बनती है और किसी स्टाइल की ओर इशारा करती है। चूँकि JSON में स्टाइल-तालिका नहीं होती, एक Default स्टाइल बनाई जाती है — Arial, आकार 20, सफ़ेद पाठ काली आउटलाइन के साथ — और सारी पंक्तियाँ उसी पर जाती हैं। इसे बाद में किसी भी ASS एडिटर में बदला जा सकता है।

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

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

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

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

संबंधित टूल