Giải thích phụ đề XML: TTML, DFXP và IMSC
Tệp phụ đề TTML, DFXP và IMSC là gì, thời gian của chúng hoạt động thế nào, và chính xác công cụ chuyển đổi của trang này đọc gì từ chúng và bỏ qua gì.
Tác giả: Syed Peera Saheb · Phát hành
Câu trả lời ngắn gọn
TTML, DFXP và IMSC là các tệp phụ đề XML dựa trên Timed Text Markup Language của W3C. DFXP là tên cũ của TTML, còn IMSC là một profile của nó dùng cho phát trực tuyến và truyền hình.
Nếu bạn có tệp phụ đề .ttml, .dfxp hoặc .xml và cần SRT hoặc VTT, công cụ chuyển đổi trên trang này đọc được nội dung, thời gian, ngắt dòng cùng in nghiêng, in đậm và gạch chân. Nó không giữ vị trí, màu sắc hay phông chữ, và không đọc được mọi tệp XML có chứa phụ đề.
Một họ định dạng, nhiều tên gọi
TTML là tiêu chuẩn của W3C cho văn bản định thời. Trong khi đang được soạn thảo, nó được gọi là DFXP, Distribution Format Exchange Profile, và đặc tả TTML 1 vẫn ghi chú rằng tên cũ còn tồn tại trong tên profile và phần mở rộng tệp. Trên thực tế, tệp .dfxp và tệp .ttml chứa cùng một loại tài liệu. TTML2 là phiên bản thứ hai và bổ sung thêm tính năng.
Vì TTML rất lớn, các ngành đã định nghĩa các profile: tập con quy định những tính năng mà một tệp được phép dùng. IMSC, profile Internet Media Subtitles and Captions, là một trong những profile phổ biến nhất. Các phiên bản hiện tại của nó định nghĩa một profile chỉ có văn bản và một profile chỉ có hình ảnh. EBU-TT là profile được các đài truyền hình châu Âu sử dụng, còn SMPTE-TT được dùng trong truyền hình Mỹ. Tất cả đều bắt đầu bằng phần tử gốc <tt>.
Tệp TTML trông như thế nào
Một tài liệu TTML có phần head và phần body. Phần head có thể định nghĩa kiểu, như phông chữ hay màu sắc, và vùng (region), tức các khu vực trên màn hình. Phần body chứa các đoạn, tức phần tử <p>, mỗi đoạn có thời gian bắt đầu, kết thúc và nội dung phụ đề. Thẻ <br/> bắt đầu một dòng mới, còn phần tử <span> định dạng hoặc đặt thời gian cho một phần của dòng.
<?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:tickRate="10000000">
<head>
<styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
<layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
</head>
<body>
<div>
<p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
</div>
</body>
</tt>Cách hoạt động của thời gian trong TTML
TTML cho phép nhiều cách viết thời gian. Thời gian dạng đồng hồ trông như 00:00:01.200, hoặc 00:00:01:05 với số khung hình ở cuối. Thời gian offset là một con số kèm đơn vị: 1.2s, 1200ms, 30f cho khung hình, hoặc 12000000t cho tick. Tick phổ biến trong tệp từ các dịch vụ phát trực tuyến; thuộc tính tickRate của phần tử gốc cho biết bao nhiêu tick làm thành một giây, nên với tốc độ tick 10.000.000, 12000000t là 1,2 giây.
Thời gian cũng có thể là tương đối. Một div có thể có thời gian begin riêng được cộng vào các đoạn bên trong, một đoạn có thể ghi thời lượng thay vì thời gian kết thúc, và một đoạn không có thời gian có thể lấy từ các span của nó. Đây là lý do các công cụ tìm và thay thế đơn giản thường làm sai thời gian TTML.
Những gì trang này đọc được
Công cụ chuyển đổi nhận ra TTML qua phần tử gốc <tt>, bất kể phần mở rộng tệp, nên các tệp .ttml, .dfxp và .xml đều mở được. Ví dụ ở trên trở thành một dòng phụ đề từ 1,2 đến 3,5 giây với hai dòng, dòng thứ hai in nghiêng. Cụ thể, nó đọc:
- Thời gian dạng đồng hồ có phần lẻ hoặc khung hình, và thời gian offset theo giờ, phút, giây, mili giây, khung hình và tick.
- Các thiết lập frameRate, frameRateMultiplier, subFrameRate và tickRate trên phần tử gốc. Nếu không có tốc độ tick, nó suy ra từ tốc độ khung hình, hoặc dùng một tick mỗi giây, như đặc tả mô tả.
- Begin, end và dur trên đoạn và span, cộng thêm thời gian begin của body và các div bao ngoài.
- Ngắt dòng được viết bằng <br/>.
- In nghiêng, in đậm và gạch chân, dù được đặt trực tiếp trên phần tử hay qua một kiểu có tên.
- Các phần tử có tiền tố namespace, như <tt:p> trong EBU-TT và một số tệp IMSC. Siêu dữ liệu, như ghi chú cho người biên tập, bị bỏ qua và không bao giờ trở thành nội dung phụ đề.
Những gì bị bỏ
Công cụ chuyển đổi giữ chữ và thời gian, bỏ phần trình bày. Vùng và vị trí, màu sắc, phông chữ, cỡ chữ, nền, viền và thiết lập hướng chữ không được mang sang. Nếu một tệp hiển thị hai đoạn cùng lúc ở hai vùng khác nhau, ví dụ hai người nói ở trên và dưới, chúng sẽ trở thành hai dòng phụ đề chồng lấn; công cụ kiểm tra phụ đề sẽ chỉ ra chúng.
Một số tệp phụ đề XML hoàn toàn không phải TTML, và trang sẽ báo rằng không nhận ra chúng là phụ đề. Trong đó có cả XML timedtext của chính YouTube, có phần tử gốc là <timedtext> hoặc <transcript> thay vì <tt>. Tệp IMSC dạng hình ảnh, lưu ảnh chụp của chữ, không chứa chữ để đọc. Các chế độ thời gian hiếm gặp, như timecode drop-frame SMPTE, không được xử lý riêng, nên hãy đối chiếu vài dòng phụ đề gần cuối bản xem trước với video.
Kết quả ghi ra
Khi bạn chuyển sang TTML hoặc DFXP, công cụ chuyển đổi ghi một tài liệu TTML 1 đơn giản: mỗi dòng phụ đề trở thành một đoạn có thời gian begin và end dạng đồng hồ tính bằng mili giây, ngắt dòng trở thành <br/>, còn in nghiêng, in đậm và gạch chân trở thành các span với thuộc tính kiểu tương ứng. Không có phần head chứa kiểu hay vùng, nên trình phát dùng giao diện mặc định. Tùy chọn DFXP ghi cùng tài liệu đó với phần mở rộng .dfxp.
Thuộc tính ngôn ngữ trên phần tử gốc được để trống, vì công cụ chuyển đổi không thể biết phụ đề của bạn bằng ngôn ngữ nào. Một số nền tảng yêu cầu thuộc tính này. Nếu nền tảng của bạn yêu cầu, hãy mở tệp bằng trình soạn thảo văn bản và điền xml:lang với một mã như en hoặc es trước khi tải lên.
<?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="">
<body>
<div>
<p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
</div>
</body>
</tt>Chuyển TTML hoặc DFXP sang SRT hoặc VTT
Chuyển đổi chỉ mất vài giây, và tệp vẫn ở trên thiết bị của bạn.
- Mở công cụ chuyển TTML sang SRT hoặc DFXP sang SRT, hoặc công cụ chuyển đổi chính, và chọn tệp .ttml, .dfxp hoặc .xml của bạn.
- Kiểm tra phần tóm tắt. Nó cho biết đã tìm thấy bao nhiêu dòng phụ đề và có đoạn nào có thời gian không đọc được hay không.
- Chọn định dạng đầu ra, như SRT hoặc VTT, và xem qua bản xem trước.
- Phát kết quả cùng video và so sánh một dòng phụ đề gần đầu và một dòng gần cuối, phòng khi tệp dùng chế độ thời gian mà công cụ chuyển đổi không xử lý.
- Tải tệp xuống. Tệp được lưu dưới dạng UTF-8.
Khi nào nên dùng TTML, và khi nào không
Dùng TTML hoặc DFXP khi một nền tảng, dịch vụ phát trực tuyến hoặc đài truyền hình yêu cầu; đặc tả bàn giao của họ thường nêu tên một profile, và một tệp TTML 1 đơn giản có thể đáp ứng hoặc không. Để dùng hằng ngày trong trình phát, trình chỉnh sửa và nền tảng video, SRT hoặc WebVTT đơn giản hơn và được hỗ trợ rộng rãi hơn. Nếu bạn nhận được tệp TTML và chỉ muốn xem hoặc chỉnh sửa, hãy chuyển nó sang SRT.
Dù thế nào cũng hãy giữ tệp gốc. Chuyển sang SRT sẽ bỏ vĩnh viễn vùng và kiểu dáng, nên nếu sau này bạn cần bàn giao lại TTML với vị trí ban đầu, bạn sẽ cần tệp nguồn chứ không phải tệp TTML dựng lại từ SRT.
Câu hỏi thường gặp
DFXP có giống TTML không? Trên thực tế là có. DFXP là tên dùng khi TTML còn đang được soạn thảo, và công cụ chuyển đổi xử lý cả hai như nhau.
Vì sao tệp .xml của tôi bị báo không phải tệp phụ đề? Hoặc nó không phải TTML, ví dụ XML timedtext của YouTube, hoặc nó không chứa phần tử gốc <tt>. Công cụ chuyển đổi không đọc những tệp đó.
Tệp SRT sau khi chuyển đổi có giữ vị trí của từng dòng phụ đề không? Không. SRT không có cách chuẩn để đặt vị trí phụ đề, và công cụ chuyển đổi không mang vùng TTML sang bất kỳ định dạng nào.