Chuyển JSON sang TTML
Hoặc dán văn bản phụ đề
Chuyển đổi này thay đổi điều gì
1 thứ bị bỏ hoặc cần một quyết định
- Karaoke
thời gian karaoke (tô sáng từng âm tiết)
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.
Trang này chuyển đổi JSON sang TTML. Bạn kéo tệp vào hoặc dán văn bản, rồi nhận lại phiên bản TTML. Toàn bộ quá trình chạy ngay trong trình duyệt: không tải tệp lên máy chủ, không cần tài khoản.
TTML ghi được kiểu, vị trí và mốc mili giây, nhưng không có chỗ cho một mốc bên trong dòng, nên karaoke của JSON bị bỏ. Danh sách mất mát phía trên lấy từ khả năng của hai định dạng chứ không phải từ tệp của bạn, nên nó giống nhau trước khi bạn mở tệp.
Một tệp hay cả mùa đều được: hàng đợi xử lý lần lượt và trả kết quả về cùng một tệp ZIP.
Ví dụ
Tệp JSON thông thường, chuyển sang TTML
Đầu vào
{
"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"
}
]
}
Kết quả
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:00.000" end="00:00:02.000">Hello world.<br/>Second line.</p>
<p begin="00:00:02.500" end="00:00:04.000">Plain line.<br/><span tts:fontStyle="italic">Styled</span> line.</p>
<p begin="00:00:04.500" end="00:00:06.000">Roger: I am here.</p> </body>
</tt>
Phần bị mất trong kết quả này: karaoke. Phần còn lại khớp từng dòng.
Cùng phép chuyển trên một tệp lộn xộn
Đầu vào
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Kết quả
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:00.000" end="00:00:01.000">First.</p>
<p begin="00:00:01.000" end="00:00:02.000">Second.</p>
<p begin="00:00:02.000" end="00:00:03.000">Third.</p> </body>
</tt>
Đây là kiểu hỏng tệp thật thường có — kết thúc dòng lẫn lộn, khoảng trắng thừa, trường bỏ trống. So sánh với ví dụ gọn phía trên để thấy bộ đọc bỏ qua được gì.
Câu hỏi thường gặp
Mốc karaoke trong JSON đi đâu khi chuyển sang TTML?
Mốc mất, chữ ở lại. Karaoke nằm trong các span đánh dấu lúc từng âm tiết sáng lên, còn `<p>` của TTML không ghi được một mốc bên trong dòng; vì thế dấu karaoke được bỏ và âm tiết ra thành chữ TTML thường.
Kết quả JSON sang TTML trông như thế nào?
Mỗi cue là một phần tử `<p>` với thuộc tính `begin` và `end`, nằm trong `<body>`, phía trên là khai báo XML. Không có số thứ tự cue; một cue JSON thành một cue TTML cùng thứ tự.
Mốc thời gian của JSON có chính xác trong TTML không?
Có, tới mili giây. JSON ghi `4126` và TTML ghi `00:00:04.126`; không có làm tròn hay dịch chuyển, nên cue dài 2,9 giây vẫn giữ nguyên.
Một cue JSON hai dòng ra sao trong TTML?
Hai phần tử trong mảng `lines` được nối bằng `<br/>`, cách TTML ghi ngắt dòng cứng. Hai dòng vẫn thuộc một cue và hiển thị cùng lúc.
Các cue JSON có giữ thứ tự trong kết quả TTML không?
Có, và được sắp theo trường `start` trước khi ghi. Tài liệu JSON lộn thứ tự sẽ cho TTML đúng thứ tự; chỉ cấu trúc tệp thay đổi, chữ không đổi.
Tôi có chuyển ngược TTML về JSON được không?
Được, nhưng chiều TTML sang JSON bỏ nội dung riêng của định dạng: prolog, bảng `<styling>`, bảng `<layout>` và `<metadata>` của TTML không có chỗ trong mô hình cue của JSON. Danh sách mất mát của chiều ngược khác phía trên.
Kết quả TTML có giữ encoding của tệp JSON không?
Không. TTML xuất ra là UTF-8, kết thúc dòng kiểu Unix và không có BOM, bất kể JSON đầu vào dùng gì. Tệp UTF-16 được giải mã khi đọc và bảng kết quả sẽ báo.