Lompat ke konten utama
SubtitleMatrix

Konversi LRC ke JSON

Konversi formatLirik (LRC)
Atau tempel teks subtitle

Opsi

Dipakai saat sumber tidak punya waktu akhir (teks biasa, LRC). Timeline di keluaran dibuat di sini, bukan dikonversi, jadi angka inilah yang Anda dapatkan.

Apa yang berubah dalam konversi ini

1 hal dihapus atau memerlukan keputusan

  • Waktu

    waktu akhir cue — sumber tidak mencatatnya, sehingga waktu akhir keluaran akan dihasilkan, bukan dikonversi

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 LRC menjadi JSON. LRC menulis lirik dengan stempel waktu dalam kurung siku; JSON menyimpannya sebagai larik objek cue dengan id, start, end, dan daftar baris.

Setiap stempel waktu LRC hanya menandai satu baris, jadi format ini tidak bisa menyatakan dua baris tampil bersamaan. Waktu akhir, presisi, gaya, dan posisi juga tidak punya tempat di JSON. Setiap akhir cue dihitung dari awal baris berikutnya karena LRC tidak menyimpannya, digit tambahan dibulatkan ke 10 ms, dan tidak ada styling atau posisi yang bisa dibawa.

Konversi berjalan di peramban tanpa unggahan dan tanpa akun. Antrean memproses satu file atau satu musim secara berurutan dan mengemas semua hasil dalam satu ZIP.

Contoh

File LRC biasa, dikonversi ke JSON

Masukan

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

Keluaran

{
  "version": 1,
  "title": "Sample Song",
  "cues": [
    {
      "start": 12000,
      "end": 15300,
      "lines": [
        "First line of the song."
      ]
    },
    {
      "start": 15300,
      "end": 18000,
      "lines": [
        "Second line.",
        "Second line, translated."
      ]
    },
    {
      "start": 18000,
      "end": 21500,
      "lines": [
        ""
      ]
    },
    {
      "start": 21500,
      "end": 23500,
      "lines": [
        "Final line."
      ]
    }
  ]
}

Yang hilang di keluaran ini: waktu akhir, presisi, gaya, dan posisi. Selebihnya cocok baris per baris.

Konversi yang sama pada masukan berantakan

Masukan

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

Keluaran

{
  "version": 1,
  "cues": [
    {
      "start": 3000,
      "end": 5500,
      "lines": [
        "Out of order."
      ]
    },
    {
      "start": 5500,
      "end": 7000,
      "lines": [
        "Leading zero omitted, one decimal."
      ]
    },
    {
      "start": 7000,
      "end": 9000,
      "lines": [
        "Second with no centiseconds.",
        "Repeated chorus line."
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Repeated chorus line."
      ]
    },
    {
      "start": 12000,
      "end": 14000,
      "lines": [
        ""
      ]
    }
  ]
}

File nyata sering membawa tag metadata tak dikenal, spasi liar, dan baris kosong. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.

Pertanyaan yang sering diajukan

Bagaimana JSON mengisi end padahal LRC hanya punya waktu mulai?

Nilai end dihitung dari waktu mulai baris berikutnya, bukan disalin dari file. LRC memang tidak menyimpan akhir baris, jadi setiap durasi di JSON adalah hasil turunan; baris terakhir memakai batas aman. Itulah sebabnya daftar kehilangan mencantumkan waktu akhir.

Apakah waktu LRC tetap persis di file JSON?

Ya, sejauh yang LRC simpan. LRC menulis [00:04.12] dan JSON menyimpan 4120 milidetik; nilainya sama dan digit ketiga menjadi nol. Tidak ada pembulatan selama file LRC memakai dua digit desimal.

Apakah LRC membawa gaya ke JSON?

Tidak. JSON keluaran punya larik tags pada setiap baris, tetapi LRC tidak pernah mengisi gaya: tidak ada tebal, miring, warna, atau font di format sumber. Larik itu tetap ada sebagai struktur, sementara isinya hanya teks apa adanya.

Seperti apa bentuk keluaran LRC saat menjadi JSON?

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

Apakah urutan baris LRC dipertahankan di JSON?

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

Apakah JSON hasil konversi memakai encoding file LRC?

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

Alat terkait