Chuyển TTML sang CSV
Hoặc dán văn bản phụ đề
Chuyển đổi này thay đổi điều gì
3 thứ bị bỏ hoặc cần một quyết định
- Định dạng hiển thị
mọi định dạng hiển thị (đậm, nghiêng, màu, viền, bóng)
- Vị trí
vị trí trên màn hình (mọi cue trở về vị trí mặc định)
- Nội dung riêng của định dạng
nội dung mà định dạng nguồn giữ bên ngoài các cue (khối không phải cue, văn bản đầu tệp, thiết lập riêng từng cue, sự kiện bị chú thích) — định dạng đích không có chỗ cho nó
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 TTML sang CSV. 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 CSV. 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 giữ kiểu chữ và bố cục trong phần đầu tệp; CSV chỉ có hàng và cột, nên kiểu, vị trí và các cấu trúc riêng của TTML không có chỗ đứng. 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 TTML thông thường, chuyển sang CSV
Đầu vào
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Kết quả
start,end,text
00:00:01.000,00:00:03.500,Hello <i>there</i>.
00:00:03.500,00:00:06.000,"How are you?
Fine, thanks."
Phần bị mất trong kết quả này: kiểu chữ, vị trí và nội dung riêng của định dạng. 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
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
Kết quả
start,end,text
00:00:01.500,00:00:03.500,Loaded from an offset and a duration.
00:00:04.000,00:00:06.500,A coarser clock spelling.
00:00:07.000,00:00:08.480,"Frames, at 25fps."
00:00:09.000,00:00:11.000,"<font color=""#FF0000"">Half-open</font> and Tom & Jerry."
Đâ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
Chữ đậm và in nghiêng trong TTML có sống sót khi sang CSV không?
Phần nhấn mạnh đi theo, bảng kiểu toàn cục thì không. Chữ đậm, nghiêng, gạch chân và màu được ghi vào ô CSV bằng thẻ `<b>`, `<i>`, `<u>`, `<font color="…">`; còn font, cỡ chữ, viền, bóng và lề khai báo trong `<head>` của TTML thì mất.
Vị trí trên màn hình của TTML ra sao khi chuyển sang CSV?
CSV không nói được phụ đề nằm ở đâu, nên các tham chiếu `region` và `style` trên mỗi `<p>` bị bỏ; mọi dòng trở về vị trí mặc định của trình phát, thường là đáy khung hình và căn giữa.
Prolog, bảng `<styling>` và `<layout>` của TTML đi đâu trong tệp CSV?
Bị bỏ: khai báo XML, namespace, bảng `<styling>` (`tts:color`, `tts:fontWeight`), bảng `<layout>` (`tts:origin`, `tts:extent`) và `<metadata>`. CSV chỉ có ba cột start, end, text, nên phần đầu tệp TTML không có cột nào để chứa; nhấn mạnh nằm trong câu vẫn được viết thành thẻ trong ô text.
Kết quả TTML sang CSV trông như thế nào?
Có hàng tiêu đề `start,end,text`, sau đó mỗi cue là một hàng. Mốc thời gian giữ dạng `00:00:04.126` như TTML, nên độ chính xác mili giây không đổi.
Mốc thời gian của TTML có chính xác trong tệp CSV không?
Có, tới mili giây. TTML và CSV đều ghi `00:00:04.126`, nên mốc thời gian ra đúng từng ký tự. Dấu phẩy ở đây là dấu phân tách cột — dữ liệu của bảng tính — chứ không phải dấu câu.
Một cue TTML hai dòng ra sao trong CSV?
Hai dòng nằm trong cùng một ô text và được đặt trong dấu ngoặc kép theo quy tắc CSV. Cặp dòng vẫn thuộc một cue, nên đọc lại bằng trang này sẽ ra một phụ đề chứ không phải hai.
Các cue TTML có giữ thứ tự trong kết quả CSV không?
Có. Các hàng được sắp theo mốc bắt đầu trước khi ghi, nên thứ tự trong CSV là thứ tự trình phát đọc; nội dung chữ không bị đổi.
Tôi có chuyển ngược CSV về TTML được không?
Được, và chiều CSV về TTML không mất thêm gì vì CSV giữ ít hơn TTML. Những gì đã mất ở chiều này thì không dựng lại được: kiểu chữ, vị trí và phần đầu TTML không được ghi ở đâu trong CSV.
Kết quả CSV có giữ encoding của tệp TTML không?
Không. CSV xuất ra là UTF-8, kết thúc dòng kiểu Unix và không có BOM. Nếu tệp TTML vào bằng UTF-16 hay bảng mã một byte kiểu Windows, trang sẽ giải mã và báo trong bảng kết quả.