Timed Text Markup Language

MởLưuXMLCó kiểu

XML của W3C dành cho phụ đề và chú thích, là định dạng mà đài truyền hình và các dịch vụ phát trực tuyến yêu cầu. DFXP là tên của profile đầu tiên, và nhiều tệp vẫn mang tên đó. IMSC, EBU-TT-D và iTT của Apple cũng là TTML, mỗi loại có thói quen riêng.

Tổng quan

Phần mở rộng.ttml
Loại phương tiệnapplication/ttml+xml
Đặc tảW3C, Timed Text Markup Language 1 (TTML1), một Recommendation. TTML2 mở rộng nó; IMSC và EBU-TT-D là các tập con để phân phối.
Độ chính xác thời gianTùy ý: phần của giây, khung hình hoặc tick
Mã hóa văn bảnĐược khai báo trong XML. Hầu như luôn là UTF-8.
Kiểu chữKiểu được đặt tên và các thuộc tính tts:: phông, cỡ, màu, nền, nghiêng, đậm, gạch chân, gạch ngang, viền
Vị tríVùng: các hộp được đặt và định kích thước ở bất kỳ đâu trên khung hình
Người nóiAgent (ttm:agent), được đặt tên trong phần head
Trong containerMP4 dạng stpp (ISO/IEC 14496-30), trong luồng DASH, CMAF và HLS

Cấu trúc của một tệp

Một tài liệu XML: một head đặt tên cho các kiểu và vùng của màn hình, và một body gồm các đoạn, mỗi đoạn cho một phụ đề.

<tt xml:lang="en" …>
<head>styles, regions</head>
<body><div>
<p begin="00:00:23.000"
   end="00:00:24.500">
You're a jerk,<br/>Thom.</p>
</div></body>
</tt>
  1. 1 · Gốc

    <tt>, với các namespace của TTML, ngôn ngữ, và đồng hồ mà thời gian được đếm theo: ttp:frameRate, ttp:tickRate.

  2. 2 · Head

    Các kiểu được đặt tên, các vùng của màn hình, và ai đang nói.

  3. 3 · Thời gian

    begin của mỗi đoạn, và end hoặc dur của nó.

  4. 4 · Văn bản

    Phụ đề. Thẻ span tạo kiểu cho một phần của nó, và <br/> ngắt dòng.

Thời gian

TTML viết thời gian theo nhiều cách hơn bất kỳ định dạng phụ đề nào khác:

Ghi như Ý nghĩa
00:00:23.500 Giờ, phút, giây và phần lẻ
00:00:23:12 Khung hình sau giây: mười hai khung theo ttp:frameRate của tệp
23.5s, 23500ms, 1h Một khoảng bù theo giờ, phút, giây hoặc mili giây
564f Khung hình
235000000t Tick, có ttp:tickRate tick mỗi giây

Thời gian được đếm từ phần chứa nó. begin của một đoạn được đếm từ đầu <div> và <body> chứa nó, và một đoạn không có end riêng sẽ kết thúc cùng chúng.

Kiểu

Một kiểu là một tập các thuộc tính tts:. Văn bản nhận chúng theo thứ tự: từ vùng của nó, rồi từ body, div, đoạn và span bao quanh. Mỗi phần tử nhận các kiểu mà nó nêu tên (style="s1 s2", và các kiểu mà chúng nêu tên), rồi đến thuộc tính riêng của nó.

Thuộc tính Tác dụng Trong Subtitld
tts:fontStyle="italic" Nghiêng Được giữ
tts:fontWeight="bold" Đậm Được giữ
tts:textDecoration="underline", "lineThrough" Gạch chân, gạch ngang Được giữ
tts:color Màu chữ: một tên, #rrggbb, #rrggbbaa hoặc rgb() Được giữ, không kèm độ trong suốt
tts:displayAlign, tts:textAlign Vị trí của văn bản trong vùng Được giữ, như một trong chín vị trí
tts:fontFamily, tts:fontSize Phông và cỡ chữ Không được giữ
tts:backgroundColor, tts:textOutline Một hộp sau chữ, một viền Không được giữ
<set> Một kiểu thay đổi theo thời gian Không được giữ

Vùng

Một vùng là một hộp trên khung hình, được đặt bởi tts:origin và định kích thước bởi tts:extent. Bên trong, tts:displayAlign đặt văn bản ở trên, giữa hoặc dưới (before, center, after), và tts:textAlign đặt nó sang một bên hoặc ở giữa.

<region xml:id="top"
        tts:origin="10% 10%"
        tts:extent="80% 80%"
        tts:displayAlign="before"/>

Subtitld tính ra văn bản nằm ở đâu, dù vùng được đo bằng phần trăm, điểm ảnh hay ô, và chọn một trong chín vị trí gần nhất mà {\an1} đến {\an9} của SubRip nêu tên. Khi ghi một tệp, mỗi vị trí nó dùng là một vùng mang tên tương ứng: bottom, top, top-left…

Khi tệp không nói rõ. Các giá trị mặc định của TTML đặt văn bản ở góc trên bên trái của vùng, nhưng trình phát hiển thị ở phía dưới và căn giữa, và Subtitld cũng làm vậy. Nó còn đọc textAlign="start" trong một vùng không có kích thước hay vị trí là căn giữa: các tệp viết bằng pycaption, kể cả bản Subtitld cũ hơn, đặt giá trị này trên mọi vùng.

Profile

Phần lớn TTML được viết theo một profile: một tập con của ngôn ngữ, với các quy tắc riêng. Subtitld đọc từng loại như TTML.

Profile Nơi được dùng Thói quen của nó
DFXP Profile đầu tiên của TTML, và phần mở rộng .dfxp Tệp cũ dùng namespace http://www.w3.org/2006/10/ttaf1
IMSC 1 Phát trực tuyến qua DASH, CMAF và HLS Profile của W3C cho phụ đề và chú thích trực tuyến
EBU‑TT‑D Trình phát trực tuyến của các đài truyền hình châu Âu Phần tử thường được viết với tiền tố: <tt:p>
SMPTE‑TT Chú thích trực tuyến của truyền hình Mỹ Phần bổ sung của SMPTE, cho chú thích chuyển từ phát sóng
iTT (.itt) Giao nộp cho iTunes Store và Apple TV của Apple Thời gian theo khung hình (ttp:timeBase="smpte")

TTML trong Subtitld

Được giữ trong .ttml
  • Văn bản và các ngắt dòng của mọi phụ đề
  • Nghiêng, đậm, gạch chân, gạch ngang và màu
  • Vị trí trên màn hình
  • Người nói, dưới dạng agent
  • Thời điểm bắt đầu và kết thúc, đến mili giây, theo thứ tự
Không có chỗ để lưu
  • Phông, cỡ chữ, nền và viền theo từng dòng
  • Kích thước và vị trí chính xác của một vùng
  • Kiểu thay đổi theo thời gian, ruby, phụ đề dạng hình ảnh
  • Bản dịch đặt cạnh bản gốc, lồng tiếng, khuôn mặt người nói

Hãy lưu một dự án .usfx để giữ lại những gì thuộc về Subtitld.

Mở một tệp TTML

Subtitld mở .ttml, .dfxp, .itt và .xml, và:

  • đọc TTML dù được viết theo cách nào: trong namespace của nó, trong namespace DFXP cũ, hoặc với tt: đứng trước mọi phần tử;
  • đọc mọi dạng thời gian, mỗi dạng được đếm từ div và body chứa nó;
  • theo dõi kiểu như TTML áp dụng, giữ nghiêng, đậm, gạch chân, gạch ngang và mọi màu khác trắng;
  • đặt mỗi phụ đề ở vị trí mà vùng của nó hiển thị;
  • lấy agent làm người nói, sẵn sàng cho lồng tiếng, và xml:lang của tệp làm ngôn ngữ của dự án;
  • đọc bảng mã mà tệp khai báo, và các thực thể HTML như &nbsp;.

Một tệp không phải XML đúng cấu trúc sẽ mở với thông báo nêu dòng và cột. Một tệp hoàn toàn không phải TTML sẽ được báo như vậy.

Xuất TTML

Hộp thoại xuất của Subtitld với TTML được chọn và người nói được ghi dưới dạng agent

Xuất, rồi Phụ đề và chọn TTML hoặc DFXP, sẽ có các tùy chọn:

  • Văn bảnBản gốc, một bản dịch, hoặc cả hai, với bản dịch nằm bên dưới.
  • Tên người nóiBỏ đi, đặt trước văn bản (Thom: …), hoặc dưới dạng agent (ttm:agent), cách riêng của TTML.
  • Định dạngGiữ lại, hoặc bỏ đi.
  • Dịch thời gianMọi phụ đề sớm hơn hoặc muộn hơn cùng một khoảng.
  • Diện mạoChữ trắng với viền đen, hoặc theo cách bản xem trước của Subtitld vẽ: phông, màu và hộp mờ của nó.

Tệp là TTML 1 dạng UTF-8. Thời gian được ghi như 00:00:23.000, mỗi vị trí phụ đề là một vùng, định dạng là các span, và ngắt dòng là <br/>. xml:lang là ngôn ngữ của văn bản mà nó chứa. TTML và DFXP cho ra cùng một tệp; chỉ khác phần mở rộng.

TTML hay WebVTT?

WebVTT cho một <track> trên trang web: trình duyệt tự đọc được. TTML cho đài truyền hình, cho các dịch vụ phát trực tuyến yêu cầu nó, và cho các trình phát đọc được nó, như dash.js và Shaka Player. Trang WebVTT có phần còn lại.

Điều thú vị

2010

TTML 1.0 trở thành Recommendation của W3C vào tháng 11 năm 2010, sau các bản nháp mang tên theo profile đầu tiên của nó: Distribution Format Exchange Profile, DFXP.

ttaf1

Namespace cũ, http://www.w3.org/2006/10/ttaf1, có từ các bản nháp năm 2006, khi TTML là Timed Text Authoring Format. Nhiều tệp vẫn mang nó.

Emmy

Năm 2016, W3C nhận giải Technology & Engineering Emmy cho TTML, cùng với HBO, Netflix, Telestream và SMPTE.

Định dạng liên quan

Bạn có tệp .ttml cần sửa?

Mở tệp trong Subtitld cùng video và canh lại thời gian trên dạng sóng.

Tải Subtitld