Chuyển SRT sang JSON
Hoặc dán văn bản phụ đề
Chuyển đổi này thay đổi điều gì
Không mất gì theo hướng này — mọi tính năng của định dạng nguồn đều có chỗ để đi trong định dạng đích.
Danh sách này đến từ ma trận năng lực của hai định dạng này, không phải từ tệp cụ thể bạn đã tải lên. Một tệp cụ thể có thể mất nhiều hơn nếu nó dùng các tính năng mà định dạng cho phép nhưng ma trận không mô hình hóa.
Tệp SRT chỉ là danh sách cue kèm mốc thời gian, nên phép chuyển đổi bắt đầu từ một dòng thời gian sạch. Trang này chuyển tệp SRT sang JSON. Kết quả là một tài liệu JSON liệt kê từng cue với thời điểm bắt đầu, kết thúc và phần chữ. Lược đồ là của trang này, cố ý nhỏ — một số phiên bản và một mảng cue, thời gian là số nguyên mili giây.
Đây là hướng không mất mát: SRT và JSON chứa được cùng một tập thông tin, nên tệp ra chỉ khác cú pháp bao quanh chứ không khác nội dung.
Tệp được xử lý cục bộ trong trình duyệt, không qua máy chủ và không cần đăng nhập. Thả một tệp hay cả loạt tệp đều được: chúng chạy lần lượt, có thể hủy, và kết quả gộp trong một tệp ZIP.
Ví dụ
Một tệp SRT thông thường, chuyển sang JSON
Đầu vào
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
Kết quả
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
"Hello there."
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": [
{
"text": "Whispering now.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 10
}
]
},
"And a second line."
]
},
{
"id": "3",
"start": 6000,
"end": 9250,
"lines": [
{
"text": "Bold statement.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
}
]
}
]
}
]
}
Không có gì bị bỏ ở hướng này: mọi dòng và mốc thời gian của tệp vào đều có mặt trong tệp ra.
Cùng phép chuyển SRT sang JSON trên một tệp lộn xộn
Đầu vào
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
Kết quả
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
{
"text": "Bold and italic.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
},
{
"kind": "italic",
"start": 9,
"end": 15
}
]
}
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": []
},
{
"id": "3",
"start": 8000,
"end": 9000,
"lines": [
"Last one."
]
}
]
}
Đây là kiểu hỏng tệp thật hay gặp — xuống dòng lẫn lộn, khoảng trắng thừa, trường bỏ trống. Đặt cạnh ví dụ gọn phía trên để thấy trình đọc tha cho những gì.
Câu hỏi thường gặp
JSON xuất từ SRT theo lược đồ nào?
Lược đồ riêng của trang này: một số phiên bản rồi một mảng cue. Mỗi cue có id, start và end bằng mili giây, và một mảng lines. Tệp SRT có định danh cue thì chúng được ghi vào id; không có siêu dữ liệu ẩn và không phụ thuộc định dạng của bên thứ ba.
Mốc thời gian của SRT có bị làm tròn khi sang JSON không?
Không. SRT và JSON đều ghi tới mili giây, nên 00:00:01.234 thành 1234 rồi quay lại nguyên vẹn: không mất mát, không dịch chuyển, không đổi thứ tự.
Định dạng trong tệp SRT được biểu diễn thế nào trong JSON?
Dòng không có định dạng vẫn là chuỗi. Dòng mang in nghiêng, in đậm hay màu thành một đối tượng có text và mảng tags; mỗi thẻ ghi loại của nó và vị trí bắt đầu, kết thúc bên trong đoạn chữ. Chuyển ngược lại thì định dạng được ghi ra như cũ.
Tôi có nạp được JSON xuất từ SRT vào một script không?
Đó chính là mục đích. Hãy đọc mảng cues, lấy start và end dưới dạng số, rồi nối các dòng — mỗi dòng hoặc là chuỗi, hoặc là đối tượng có trường text chứa chữ. Không có timecode nào phải tách chuỗi trước.
Tệp SRT của tôi có bị gửi đi đâu khi chuyển sang JSON không?
Không. Tệp được đọc và ghi ngay trong tab trình duyệt; chỉ trang web đi qua mạng, còn nội dung SRT — chữ, mốc thời gian, thẻ — không vào bất kỳ yêu cầu nào. Sau khi trang tải xong, bạn có thể ngắt mạng mà vẫn chuyển được sang JSON.