Lompat ke konten utama
SubtitleMatrix

Konversi JSON ke SRT

Atau tempel teks subtitle

Apa yang berubah dalam konversi ini

3 hal dihapus atau memerlukan keputusan

  • Pemformatan

    seluruh pemformatan (tebal, miring, warna, garis tepi, bayangan)

  • Posisi

    posisi di layar (setiap cue kembali ke posisi bawaan)

  • Karaoke

    timing karaoke (penyorotan per suku kata)

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.

Di sini Anda dapat mengonversi JSON ke SRT: seret satu file atau tempel teks, lalu unduh hasil SRT. Pemrosesan sepenuhnya lokal di peramban — tidak ada file yang diunggah dan tidak perlu akun.

Kedua format ini tidak menyimpan hal yang sama, dan perbedaannya bukan sekadar kosmetik: gaya, posisi, dan karaoke tidak punya tempat di SRT. Dokumen JSON di sini adalah model field: setiap cue punya `id`, `start`, dan `end` dalam milidetik, `lines` membawa `tags`, dan objek `styles` menyimpan tabel gaya. Daftar di atas berasal dari apa yang dapat diekspresikan masing-masing format, bukan dari file Anda, jadi jawabannya sama sebelum Anda memuat apa pun.

Batch juga didukung: antrean memproses setiap file secara berurutan, lalu seluruh hasil dikemas sebagai satu ZIP.

Contoh

File JSON umum, dikonversi ke SRT

Masukan

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

Keluaran

1
00:00:00,000 --> 00:00:02,000
Hello world.
Second line.

2
00:00:02,500 --> 00:00:04,000
Plain line.
<i>Styled</i> line.

3
00:00:04,500 --> 00:00:06,000
Roger: I am here.

Yang hilang pada keluaran ini: gaya, posisi, dan karaoke. Sisanya cocok baris demi baris.

Konversi yang sama pada input berantakan

Masukan

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

Keluaran

1
00:00:00,000 --> 00:00:01,000
First.

2
00:00:01,000 --> 00:00:02,000
Second.

3
00:00:02,000 --> 00:00:03,000
Third.

Inilah jenis kerusakan yang ada pada file nyata — byte-order mark, koma yang hilang, nilai null, atau waktu yang tidak terbaca. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.

Pertanyaan yang sering diajukan

Bentuk JSON mana yang diterima saat menjadi SRT?

Dokumen yang ditulis situs ini — nomor versi dan array `cues` — serta bentuk array yang setara, di mana file hanya berisi daftar cue. Yang penting setiap cue punya awal, akhir, dan teks dalam salah satu bentuk yang dikenali.

Apa yang terjadi pada judul, gaya, dan frame rate JSON saya saat menjadi SRT?

Semuanya dibaca lalu dilaporkan sebagai hilang, karena SRT tidak punya field untuk itu. Frame rate khususnya tidak punya tempat — SRT menyimpan waktu jam, bukan frame — jadi dicantumkan di atas, bukan dipakai diam-diam.

Apakah milidetik JSON dibulatkan saat keluar ke SRT?

Tidak. SRT menyimpan milidetik dan file JSON ditulis dalam milidetik, jadi setiap awal dan akhir dipindahkan persis dan timeline tidak bergeser.

Bagaimana jika awal cue JSON setelah akhirnya saat menjadi SRT?

Konverter memperbaikinya alih-alih menolak file, sehingga dokumen yang diedit tangan tetap menghasilkan file subtitle yang bisa dimuat. Periksa timing cue itu terhadap video, karena file sudah memberi tahu ada yang salah.

Bisakah file JSON bolak-balik lewat SRT tanpa kehilangan apa pun?

Mengonversi ke JSON dan kembali mereproduksi timeline Anda persis, dan mereproduksi pemformatan yang bisa dijelaskan JSON: miring, tebal, dan warna menjadi tag lalu kembali sebagai tag. Yang tidak bertahan dalam bolak-balik adalah apa pun yang tidak bisa disimpan SRT sendiri, tepatnya yang tercantum di atas.

Alat terkait