Konversi JSON ke SBV
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.
Halaman ini mengonversi JSON ke SBV. Seret file ke sini — atau tempel teksnya — dan Anda mendapat versi SBV kembali. Konversi berjalan sepenuhnya di peramban Anda, jadi tidak ada yang diunggah dan tidak perlu akun.
JSON dan SBV menyimpan hal yang berbeda, dan selisihnya nyata: gaya, posisi, dan karaoke tidak punya tempat di SBV. 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 dihitung dari kemampuan kedua format, bukan dari isi file Anda, sehingga hasilnya tidak berubah sebelum file dimuat.
Satu file tidak masalah, begitu juga satu musim penuh: antrean memprosesnya secara berurutan dan hasilnya diunduh bersama sebagai satu ZIP.
Contoh
File JSON umum, dikonversi ke SBV
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
0:00:00.000,0:00:02.000
Hello world.
Second line.
0:00:02.500,0:00:04.000
Plain line.
<i>Styled</i> line.
0:00:04.500,0: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
0:00:00.000,0:00:01.000
First.
0:00:01.000,0:00:02.000
Second.
0:00:02.000,0: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
Apakah tebal dan miring bertahan dari JSON ke SBV?
Penekanan bertahan; tabel gaya tidak. Pemformatan yang melekat pada sepotong teks — tebal, miring, garis bawah, warna — ditulis ke teks SBV sebagai tag (`<i>`, `<b>`, `<u>`, `<font color="…">`), karena itulah satu-satunya jenis gaya yang masih bisa dibawa format tingkat cue. Yang hilang adalah semua yang dikatakan file JSON secara global: font, ukurannya, garis tepi, bayangan, dan margin.
Apa yang terjadi pada posisi di layar dari JSON ke SBV?
SBV tidak dapat menyatakan di mana subtitle digambar, jadi rujukan posisi yang dibawa setiap cue dibuang saat keluar dari JSON, dan setiap cue kembali ke posisi bawaan yang dipilih pemutar — umumnya bagian bawah bingkai dan di tengah.
Apa yang terjadi pada timing karaoke dari JSON ke SBV?
Timingnya hilang; kata-katanya tetap. Karaoke hidup di span karaoke yang dibawa cue JSON, yang menandai kapan setiap suku kata menyala, dan SBV tidak punya cara mencatat momen di dalam satu baris — jadi tandanya dilepas dan suku katanya tiba sebagai teks SBV biasa.
Seperti apa keluarannya ketika JSON menjadi SBV?
Keluaran SBV disusun seperti SBV — tanpa nomor cue dan tanpa header — satu baris berisi dua waktu, lalu teksnya. Cue yang di JSON ditulis `4126` menjadi cue yang di SBV ditulis `0:00:04.126`, dalam urutan yang sama, dan tidak ada teks yang berubah.
Apakah timing JSON akurat di file SBV?
Ya, hingga milidetik — serinci yang bisa dicapai kedua format. JSON menulis satu momen sebagai `4126` dan SBV menulis momen yang sama sebagai `0:00:04.126`; tidak ada yang dibulatkan atau digeser di antara keduanya, dan cue yang tampil selama 2,9 detik tetap begitu.
Bagaimana cue JSON dua baris keluar di SBV?
Dua baris JSON menjadi dua baris di SBV, satu di bawah yang lain. Pasangannya bertahan — keduanya tetap menjadi satu subtitle di keluaran SBV, dan pemutar menampilkannya bersama.
Apakah cue JSON mempertahankan urutannya di keluaran SBV?
Urutannya dipertahankan, tetapi dirapikan: cue diurutkan menurut waktu mulai, paling awal lebih dulu. Susunan itu yang diharapkan setiap format di sini dan yang dibaca pemutar. Kalau file JSON semula tidak berurutan, keluaran SBV mengembalikannya ke urutan yang benar — perubahan struktur, bukan isi.
Bisakah SBV dikonversi balik ke JSON?
Ya, dan arah itu tidak kehilangan apa pun: file SBV menyimpan lebih sedikit daripada yang bisa disimpan JSON, jadi tidak ada yang hilang saat kembali. Namun apa yang hilang pada arah ini tetap hilang — gaya, posisi, dan karaoke tidak dapat dibangun kembali dari file SBV, karena tidak ada yang mencatatnya.
Apakah keluaran SBV mempertahankan encoding file JSON?
Tidak — keluarannya UTF-8, dengan akhir baris Unix dan tanpa byte-order mark, apa pun yang dipakai file JSON. File yang datang dalam UTF-16 atau encoding satu-byte Windows didekode saat masuk (panel hasil memberi tahu bila itu terjadi); yang keluar selalu SBV UTF-8 yang sama.