Định dạng phụ đề TTML
Định dạng này có thể biểu đạt gì
- Định dạng hiển thị văn bản
- Phông chữ, màu, viền, bóng
- Vị trí trên màn hình
- Có
- Thời gian karaoke
- Không
- Xuống dòng trong một cue
- Có
- Dòng thời gian
- Thời điểm bắt đầu và kết thúc cho mọi cue
- Độ phân giải thời gian
- 1 ms
- Thời gian lưu dưới dạng số khung hình
- Không
- Văn bản phải sang trái
- Có
Ví dụ
Tệp TTML thông thường và những gì đọc ra từ nó
Tệp
<?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>
Tệp chứa gì
2 cues, 3 lines of text
00:00:01.000 → 00:00:03.500
Hello there. [italic ×1]
[region="bottom" style="s1"]
00:00:03.500 → 00:00:06.000
How are you?
Fine, thanks.
[region="bottom"]
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
styling 1 × <style> — "s1", the colour and weight a paragraph points at by name
layout 1 × <region> — "bottom", the origin and extent a paragraph points at by name
resolved the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen positionCột phải không phải tệp đã chuyển đổi — đó là những gì trang này đọc ra từ tệp bên trái, và là điểm xuất phát của mọi phép chuyển đổi.
Tệp TTML lộn xộn và những gì vẫn đọc ra được
Tệp
<?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>
<div begin="00:00:01.000" end="00:00:05.000">
<p>Inherits its timing from the div, which we do not resolve.</p>
<p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
</div>
<!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
<div>
<p begin="00:00:10.000"/>
<p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
</div>
</body>
</tt>
Tệp chứa gì
3 cues, 2 lines of text
00:00:06.000 → 00:00:07.000
This one has its own timing.
00:00:10.000 → 00:00:12.000
(no text)
00:00:11.000 → 00:00:12.000
Last one.
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
head none — no <styling> and no <layout>, and no paragraph points at one either
comments the commented-out <p> stays a comment, in the place it was written
divs the timings on an enclosing <div> are not pushed down onto the paragraphs inside it
Reported while reading — repaired or skipped, never silently:
1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)Tệp thật thường có BOM, kết thúc dòng kiểu Windows, một dòng thừa trước timecode hoặc một timecode không đọc được. Không có gì ném lỗi: phần không hiểu được sẽ được báo chứ không bị bỏ im lặng.
Chuyển TTML (Timed Text) sang định dạng khác
Mỗi công cụ trong số này chạy hoàn toàn trong trình duyệt của bạn. Nhãn cho biết hướng đó tốn kém gì trước khi bạn mở nó.
- Độ chính xác
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Vị trí
- Nội dung riêng của định dạng
- Nội dung riêng của định dạng
- Mốc thời gian
- Định dạng hiển thị
- Vị trí
- Độ chính xác
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Vị trí
- Tốc độ khung hình
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Vị trí
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Vị trí
- Nội dung riêng của định dạng
- Độ chính xác
- Nội dung riêng của định dạng
- Mốc thời gian
- Định dạng hiển thị
- Vị trí
- Xuống dòng
- Nội dung riêng của định dạng
- Định dạng hiển thị
- Vị trí
- Nội dung riêng của định dạng
Chuyển đổi sang định dạng này
- SubRip (SRT) → TTML (Timed Text)
- WebVTT (VTT) → TTML (Timed Text)
- Advanced SubStation Alpha (ASS) → TTML (Timed Text)
- SubStation Alpha (SSA) → TTML (Timed Text)
- YouTube SBV → TTML (Timed Text)
- SAMI (SMI) → TTML (Timed Text)
- LRC Lyrics → TTML (Timed Text)
- MicroDVD → TTML (Timed Text)
- SubtitleMatrix JSON → TTML (Timed Text)
- Plain Text (TXT) → TTML (Timed Text)
- CSV Spreadsheet → TTML (Timed Text)
TTML (Timed Text) là một trong những định dạng phụ đề trang này xử lý; đây là trang tham chiếu của nó: nó lưu được gì, không lưu được gì, và trang chuyển đổi cho từng định dạng đích.
Bảng phía trên là toàn bộ: không có danh sách tính năng ẩn. Khi một dòng ghi không, đó chính xác là phần sẽ mất khi chuyển sang TTML, và mỗi trang chuyển đổi bên dưới nói rõ trước khi bạn mở tệp.
Mọi chuyển đổi đều chạy trong trình duyệt, không tải tệp lên máy chủ và không cần tài khoản — điều này quan trọng với tài liệu thuộc NDA, hồ sơ bệnh án hay bản tin bị cấm phát. Cả bộ tệp cũng đi qua hàng đợi trong một lượt và trả về một ZIP.
Câu hỏi thường gặp
Tệp TTML là gì?
`.ttml` là TTML, định dạng văn bản có thời gian mà giới phát sóng và streaming dùng để ghi phụ đề: một tài liệu XML với `<head>` khai báo kiểu và vùng có tên, còn các phần tử `<p>` là phụ đề. Các pipeline phụ đề streaming dùng nó, và hai profile SMPTE-TT, IMSC được xây trên nó.
TTML có lưu kiểu chữ không?
Có, và nhiều hơn các định dạng khác: bảng kiểu gồm font, cỡ, màu, viền và lề, cộng với mã trong từng câu để một dòng có thể đậm, có màu và đặt vị trí mà không cần kiểu có tên. TTML không lưu mốc karaoke: tệp ghi cue bắt đầu và kết thúc khi nào, không ghi từng âm tiết sáng lên lúc nào. Trong tệp, `<styling>` giữ kiểu có tên (`tts:color`, `tts:fontWeight`) và `<layout>` giữ vùng (`tts:origin`, `tts:extent`); mỗi `<p>` trỏ tới chúng bằng tên.
Mỗi cue TTML có lưu cả mốc bắt đầu và kết thúc không?
Có, và một mốc trong tệp TTML đọc là `00:00:04.126`. Đó là độ chi tiết tối đa của TTML — tới mili giây — và con số chính xác, nên cue có thể ngắn, dài hoặc chồng lên cue kế tiếp mà không hàm ý gì thêm.
Nên chuyển TTML sang định dạng nào?
Không định dạng nào trên trang này nhận trọn mọi thứ TTML lưu, nên không có chiều nào miễn phí — mỗi trang chuyển đổi có danh sách mất mát riêng. Hãy chọn đích theo danh sách bạn chấp nhận được, đừng chọn theo định dạng bạn thấy nhiều nhất.
Tệp TTML giữ gì ngoài các cue?
Khai báo XML và toàn bộ `<head>`: bảng `<styling>` của kiểu có tên (`tts:color`, `tts:fontWeight`), bảng `<layout>` của vùng có tên (`tts:origin`, `tts:extent`) và `<metadata>`. Mỗi `<p>` tham chiếu chúng bằng tên thay vì lặp lại, nên đổi một mục là đổi kiểu cho mọi phụ đề. Các tham chiếu đó nằm trên đoạn văn chứ không nằm trong mô hình cue, vì thế chuyển sang định dạng không có chúng sẽ báo mất mát.