Ana içeriğe geç
SubtitleMatrix

SSA’dan JSON’a dönüştürücü

Format dönüştürmeSubStation Alpha (SSA)
Ya da altyazı metnini yapıştırın

Bu dönüşüm neyi değiştirir

1 şey atılır ya da bir karar gerektirir

  • Biçime özgü içerik

    kaynak formatın repliklerinin dışında tuttuğu içerik (replik olmayan bloklar, başlık metni, replik başına ayarlar, yorum satırına alınmış olaylar) — hedef formatın bunun için yeri yok

Bu liste, yüklediğiniz belirli dosyadan değil, bu iki formatın yetenek matrisinden gelir. Belirli bir dosya, formatın izin verdiği ama matrisin modellemediği özellikler kullanıyorsa daha fazlasını kaybedebilir.

Bu sayfa SSA dosyasını JSON dosyasına dönüştürür. SSA’da 1,25 saniye 0:00:01.25 diye yazılır; JSON’da aynı an 1250 tam sayısı olur. Metin, replik sayısı ve replik sırası olduğu gibi kalır.

Kayıp listesi kısa ama gerçek: replik dışındaki içerik düşer: [Script Info], [V4 Styles], [Fonts] ve Comment: satırları. JSON çıktısında zamanlar tam sayı milisaniye, metin satır dizisi olarak yazılır. Metin ve zaman çizelgesi etkilenmez, düşen şey bunların çevresindeki bilgidir.

Dönüştürme tamamen tarayıcınızda çalışır: dosya hiçbir sunucuya gitmez, hesap açmanız gerekmez. Tek dosya da olur, bir sezonluk dizi de: sıra dosyaları tek tek işler, istediğiniz an durdurabilirsiniz ve sonuçlar tek bir ZIP olarak iner.

Örnekler

Tipik bir SSA dosyası, JSON’a dönüştürüldü

Girdi

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

Çıktı

{
  "version": 1,
  "title": "Example SSA",
  "styles": {
    "Default": {
      "name": "Default",
      "Name": "Default",
      "Fontname": "Arial",
      "Fontsize": "20",
      "PrimaryColour": "&H00FFFFFF",
      "SecondaryColour": "&H000000FF",
      "TertiaryColour": "&H00000000",
      "BackColour": "&H00000000",
      "Bold": "0",
      "Italic": "0",
      "BorderStyle": "1",
      "Outline": "2",
      "Shadow": "2",
      "Alignment": "2",
      "MarginL": "10",
      "MarginR": "10",
      "MarginV": "10",
      "AlphaLevel": "0",
      "Encoding": "1",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#ffffff",
      "bold": false,
      "italic": false
    }
  },
  "cues": [
    {
      "start": 1000,
      "end": 4000,
      "lines": [
        "Hello there."
      ],
      "style": "Default"
    },
    {
      "start": 5000,
      "end": 8000,
      "lines": [
        {
          "text": "Italic line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ],
      "style": "Default"
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Two",
        "lines"
      ],
      "style": "Default"
    }
  ]
}

Bu çıktıda düşenler: replik dışı içerik düşer. Metin ve replik sırası satır satır aynı kalır; iki sütunu yan yana karşılaştırabilirsiniz.

Dağınık bir SSA dosyası, yine de JSON çıktısı

Girdi

[Script Info]
Title: Dirty SSA
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

Çıktı

{
  "version": 1,
  "title": "Dirty SSA",
  "styles": {
    "Default": {
      "name": "Default",
      "Name": "Default",
      "Fontname": "Arial",
      "Fontsize": "20",
      "PrimaryColour": "&H00FFFFFF",
      "SecondaryColour": "&H000000FF",
      "TertiaryColour": "&H00000000",
      "BackColour": "&H00000000",
      "Bold": "0",
      "Italic": "0",
      "BorderStyle": "1",
      "Outline": "2",
      "Shadow": "2",
      "Alignment": "2",
      "MarginL": "10",
      "MarginR": "10",
      "MarginV": "10",
      "AlphaLevel": "0",
      "Encoding": "1",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#ffffff",
      "bold": false,
      "italic": false
    }
  },
  "cues": [
    {
      "start": 1000,
      "end": 4000,
      "lines": [
        {
          "text": "Bold and underlined.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            },
            {
              "kind": "underline",
              "start": 9,
              "end": 19
            }
          ]
        }
      ],
      "style": "Default"
    },
    {
      "start": 5000,
      "end": 8000,
      "lines": [
        "A soft",
        "break and a {\\p1}mystery{\\p0} code."
      ],
      "style": "Default"
    }
  ]
}

Gerçek dosyalar böyle gelir: karışık satır sonları, baştaki BOM, boş alanlar. Soldaki dağınık dosyanın sağda düzenli bir JSON dosyasına dönüştüğünü, anlaşılmayan her şeyin ise raporda sayıldığını görün.

Sık sorulan sorular

SSA’dan JSON’a dönüşümde ne korunur, ne değişir?

Replik metni, sırası ve zaman çizelgesi SSA’dan JSON’a olduğu gibi geçer. Değişen şey sarmalayıcıdır: SSA’da 1,25 saniye 0:00:01.25 diye yazılır; JSON’da aynı an 1250 tam sayısı olur. Bununla birlikte replik dışındaki içerik düşer: [Script Info], [V4 Styles], [Fonts] ve Comment: satırları.

SSA’da zaman kodu JSON’da nasıl yazılır?

SSA’da bir an 0:00:01.25 diye yazılır; JSON’da aynı an 1250 olur. JSON’da zamanlar tam sayı milisaniyedir, birim dönüşümü yapılmaz.

SSA dosyasındaki replik dışı bölümler JSON’a geçer mi?

Geçmez. SSA’dan JSON’a geçişte SSA dosyasında repliklerin dışında duran şeyler — [Script Info], [V4 Styles], [Fonts] ve Comment: satırları — JSON biçiminde bir karşılık bulamaz. Metin ve zamanlar etkilenmez; düşen şey dosyanın çevresindeki yapıdır.

SSA dosyasını JSON’a dönüştürdükten sonra onu hangi oynatıcılar açar?

SSA dosyasından üretilen JSON dosyasını şu araçlar açar: JSON biçimi bu siteye ve kendi araçlarınıza yöneliktir; oynatıcılar doğrudan açmaz, ama bütün alanları kayıpsız taşır.

BOM ve CRLF içeren bir SSA dosyası JSON’a dönüşürken sorun çıkarır mı?

Çıkarmaz. SSA dosyası okunurken BOM ve karışık satır sonları temizlenir, JSON çıktısı tek tip satır sonuyla yazılır. Tanınmayan bölümler atlanır ve sayılır; dönüşüm hiçbir zaman hata verip durmaz, anlaşılmayan her şey raporda görünür.

SSA dosyalarımı toplu olarak JSON’a dönüştürebilir miyim?

Evet. Birden çok SSA dosyasını bir seferde sürükleyip bırakabilirsiniz; kuyruk hepsini sırayla işler, istediğiniz an durdurabilirsiniz ve JSON çıktıları tek bir ZIP olarak iner. Dosyalar tarayıcıdan çıkmaz, sunucuya hiçbir şey yüklenmez.

JSON dosyasını yeniden SSA’ya dönüştürürsem aynı dosyayı elde eder miyim?

SSA → JSON → SSA gidiş-dönüşünde şunlar geri gelmez: replik dışındaki içerik. Metin, replik sırası ve başlangıç anları geri gelir, ama bu özellikler ikinci dönüşümde yeniden üretilemez. Gidiş-dönüşü bir yedek olarak değil, biçim değişikliği olarak düşünün.

İlgili araçlar