Chuyển TTML sang SMI
Hoặc dán văn bản phụ đề
Chuyển đổi này thay đổi điều gì
2 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ị trừ đậm và nghiêng (màu, viền, bóng, lề)
- 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 SMI. 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 SMI. 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.
SMI dùng thẻ `<SYNC Start=…>` theo mili giây; nó nhận một phần nhấn mạnh viết trong dòng chữ nhưng không nhận bảng kiểu và bố cục toàn cục của TTML. 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 SMI
Đầ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ả
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello <i>there</i>.
<SYNC Start=3500>
<P>
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
Phần bị mất trong kết quả này: kiểu chữ 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ả
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1500>
<P>Loaded from an offset and a duration.
<SYNC Start=3500>
<P>
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom & Jerry.
<SYNC Start=11000>
<P>
</BODY>
</SAMI>
Đâ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
Kiểu chữ nào của TTML sống sót sang SMI?
Phần nhấn mạnh, được ghi vào câu bằng thẻ `<b>`, `<i>`, `<u>` và `<font color="…">`. Bảng kiểu mà TTML dựa vào thì mất: font, cỡ chữ, viền, bóng và lề đều bị bỏ, còn trang nhúng phụ đề sẽ tự tạo kiểu bằng CSS của nó.
Prolog, bảng `<styling>` và `<layout>` của TTML đi đâu trong SMI?
Bị bỏ. SMI là một tài liệu HTML với các khối `<SYNC>` và `<P>`, không có chỗ cho khai báo XML, namespace, bảng kiểu có tên, bảng vùng hay `<metadata>` của TTML. Nhấn mạnh nằm trong câu vẫn được viết thành thẻ HTML.
Kết quả TTML sang SMI trông như thế nào?
Mỗi cue là một thẻ `<SYNC Start=…>` với chữ nằm trong `<P>` bên dưới, không có số thứ tự hay dòng timecode. Sau mỗi cue có một khối `<P> ` để xóa màn hình, vì SYNC thay thế toàn bộ nội dung đang hiển thị.
Mốc thời gian của TTML có chính xác trong SMI không?
Có, tới mili giây. TTML ghi `00:00:04.126` và SMI ghi `Start=4126`; không có làm tròn hay dịch chuyển, nên cue dài 2,9 giây vẫn giữ nguyên độ dài.
Một cue TTML hai dòng ra sao trong SMI?
Thành hai dòng nối bằng `<br>`, cách SAMI ghi ngắt dòng cứng. Hai dòng vẫn thuộc một cue và hiển thị cùng lúc.
Các cue TTML có giữ thứ tự trong kết quả SMI không?
Có, và được sắp theo mốc bắt đầu trước khi ghi. Tệp TTML lộn thứ tự sẽ cho SMI đúng thứ tự; đó là thay đổi cấu trúc tệp, không phải nội dung.
Tôi có chuyển ngược SMI về TTML được không?
Được, nhưng chiều SMI sang TTML bỏ nội dung riêng của định dạng: cấu trúc HTML và các khối SYNC của SMI không có tương đương trong mô hình cue của TTML. Danh sách mất mát của chiều ngược khác danh sách phía trên.
Kết quả SMI có giữ encoding của tệp TTML không?
Không. SMI xuất ra là UTF-8, kết thúc dòng kiểu Unix và không có BOM, bất kể TTML đầu vào dùng gì. Tệp UTF-16 được giải mã khi đọc và bảng kết quả sẽ báo.