Lompat ke konten utama
SubtitleMatrix

Konversi SMI ke JSON

Konversi formatSAMI (SMI)
Atau tempel teks subtitle

Apa yang berubah dalam konversi ini

1 hal dihapus atau memerlukan keputusan

  • Konten khusus format

    konten yang disimpan format sumber di luar cue-nya (blok non-cue, teks header, pengaturan per cue, event yang dikomentari) — format tujuan tidak punya tempat untuknya

Daftar ini berasal dari matriks kemampuan untuk kedua format ini, bukan dari file tertentu yang Anda muat. File tertentu bisa kehilangan lebih banyak jika memakai fitur yang diizinkan format tetapi tidak dimodelkan matriks.

Halaman ini mengubah SMI menjadi JSON. SAMI menulis subtitle sebagai fragmen HTML dengan tag <SYNC> dan <P>; JSON menyimpannya sebagai larik objek cue dengan id, start, end, dan daftar baris.

Hanya isi khas dokumen yang tidak punya tempat di JSON. Penekanan di dalam teks cue tetap terbawa ke larik tags, sedangkan blok <STYLE>, <TITLE>, dan atribut Class tidak bisa dipetakan. Menariknya, keluaran JSON tetap memiliki kunci title dan objek styles, tetapi keduanya kosong karena tidak ada padanan dari CSS SAMI.

Konversi berjalan di peramban tanpa mengunggah file dan tanpa akun. Antrean memproses satu file atau satu musim, lalu semua hasil bisa diunduh dalam satu ZIP.

Contoh

File SMI biasa, dikonversi ke JSON

Masukan

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Keluaran

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3000,
      "lines": [
        "Hello there."
      ]
    },
    {
      "start": 3500,
      "end": 6000,
      "lines": [
        "How are you?",
        "Fine, thanks."
      ]
    }
  ]
}

Yang hilang di keluaran ini: isi khas dokumen. Selebihnya cocok baris per baris.

Konversi yang sama pada masukan berantakan

Masukan

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Keluaran

{
  "version": 1,
  "cues": [
    {
      "start": 2500,
      "end": 9000,
      "lines": [
        "Line one",
        "Line two"
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Tom &amp; Jerry"
      ]
    }
  ]
}

File nyata sering membawa akhir baris campuran, spasi liar, dan kolom kosong. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.

Pertanyaan yang sering diajukan

Apa yang terjadi pada STYLE, TITLE, dan Class SAMI di keluaran JSON?

Semuanya hilang, tetapi perlu diperjelas: JSON keluaran tetap punya kunci title dan objek styles, dan keduanya keluar kosong karena tidak ada pemetaan dari CSS atau judul SAMI. Penekanan di dalam teks cue berbeda: itu masuk ke larik tags, sedangkan penanda Class=ENCC tidak punya tujuan.

Seperti apa bentuk keluaran SMI saat menjadi JSON?

Seperti JSON: larik objek cue dengan id, start, dan end. Setiap cue SMI menjadi satu cue JSON dengan urutan dan teks yang sama, dan struktur ini bisa dibaca langsung oleh aplikasi lain.

Apakah waktu SMI tetap persis di file JSON?

Ya, sampai milidetik. SMI menulis Start=4126 dan JSON menyimpan 4126 sebagai bilangan bulat milidetik; tidak ada pembulatan atau pergeseran, jadi durasi cue tidak berubah.

Bagaimana cue SMI dua baris muncul di JSON?

Sebagai dua entri dalam larik lines milik cue. Kedua baris SMI tetap menjadi satu subtitle di keluaran JSON, sehingga pengelompokan cue tidak berubah menjadi dua objek terpisah.

Apakah urutan cue SMI dipertahankan di JSON?

Ya. Cue diurutkan menaik menurut waktu mulai sebelum ditulis, paling awal lebih dulu, dan larik JSON mengikuti hasil itu. File SMI yang berantakan akan dirapikan; perubahan struktur ini disengaja.

Apa yang hilang bila JSON dikonversi balik ke SMI?

Gaya dan karaoke tidak punya padanan di SMI. Arah JSON ke SMI punya daftar kehilangannya sendiri, berbeda dari daftar arah ini karena kedua format mempertahankan hal yang berbeda.

Apakah JSON hasil konversi memakai encoding file SMI?

Tidak. JSON keluaran selalu UTF-8 dengan akhir baris Unix dan tanpa byte-order mark. Encoding masukan didekode lebih dulu; bila file SMI memakai UTF-16 atau encoding Windows, panel hasil memberi tahu bahwa dekode dilakukan.

Alat terkait