Chuyển đến nội dung chính
SubtitleMatrix

Đị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 position

Cộ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ó.

Chuyển TTML sang LRC — mất thời gian, kiểu dáng, vị trí, độ chính xác và nội dung riê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
Chuyển TTML sang MicroDVD — mất kiểu dáng, vị trí, frame rate và nội dung riêng của TTML.
  • Định dạng hiển thị
  • Vị trí
  • Tốc độ khung hình
  • Nội dung riêng của định dạng
Chuyển TTML sang TXT — mất thời gian, kiểu dáng, vị trí, ngắt dòng và nội dung riê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

Chuyển đổi sang định dạng này

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.