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

Chuyển TTML sang VTT

Hoặc dán văn bản phụ đề

Chuyển đổi này thay đổi điều gì

3 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ề)

  • Vị trí

    vị trí trên màn hình (mọi cue trở về vị trí mặc định)

  • 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 VTT. 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 VTT. 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.

VTT ghi mốc bằng dấu chấm tới mili giây, gần với TTML nhất về thời gian; nhưng bảng kiểu và bố cục trong `<head>` vẫn không đi qua được, chỉ phần nhấn mạnh trong câu còn lại dưới dạng thẻ. 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 VTT

Đầ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ả

WEBVTT

00:00:01.000 --> 00:00:03.500
Hello <i>there</i>.

00:00:03.500 --> 00:00:06.000
How are you?
Fine, thanks.

Phần bị mất trong kết quả này: kiểu chữ, vị trí 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 &amp; Jerry.</p>
    </div>
  </body>
</tt>

Kết quả

WEBVTT

00:00:01.500 --> 00:00:03.500
Loaded from an offset and a duration.

00:00:04.000 --> 00:00:06.500
A coarser clock spelling.

00:00:07.000 --> 00:00:08.480
Frames, at 25fps.

00:00:09.000 --> 00:00:11.000
<font color="#FF0000">Half-open</font> and Tom &amp; Jerry.

Đâ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 VTT?

Phần nhấn mạnh, được ghi vào câu bằng thẻ `<b>`, `<i>`, `<u>` và `<font color="…">` mà trình duyệt hiểu. Bảng kiểu toàn cục của TTML — font, cỡ chữ, viền, bóng, lề — thì mất; trang nhúng sẽ tự tạo kiểu bằng CSS.

Vị trí trên màn hình của TTML có sang được VTT không?

VTT không nói được phụ đề vẽ ở đâu trong trường hợp này, nên `region` và `style` trên `<p>` bị bỏ; mọi cue trở về vị trí mặc định của trình phát, thường là đáy khung hình và căn giữa.

Prolog, bảng `<styling>` và `<layout>` của TTML đi đâu trong VTT?

Bị bỏ. Khai báo XML, namespace, bảng kiểu có tên, bảng vùng và `<metadata>` không có chỗ trong VTT; tệp VTT chỉ có dòng `WEBVTT` rồi tới các cue. Nhấn mạnh nằm trong câu vẫn được ghi bằng thẻ.

Kết quả TTML sang VTT trông như thế nào?

Mở đầu bằng dòng `WEBVTT`, sau đó mỗi cue có thể có một dòng định danh mà trình phát không hiển thị. Một cue TTML thành một cue VTT, cùng thứ tự và cùng nội dung chữ.

Mốc thời gian của TTML có chính xác trong tệp VTT không?

Có, tới mili giây. TTML và VTT đều ghi `00:00:04.126`, nên timecode ra đúng từng ký tự; không có làm tròn hay dịch chuyển.

Một cue TTML hai dòng ra sao trong VTT?

Thành hai dòng đặt dưới nhau trong cùng một cue. Cặp dòng vẫn thuộc một phụ đề nên trình phát hiển thị chúng cùng lúc.

Các cue TTML có giữ thứ tự trong kết quả VTT 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 VTT đúng thứ tự; chỉ cấu trúc tệp thay đổi, chữ không đổi.

Tôi có chuyển ngược VTT về TTML được không?

Được, nhưng chiều VTT sang TTML bỏ nội dung riêng của định dạng: các khối NOTE, STYLE, REGION và thiết lập cue của VTT không có chỗ trong mô hình 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ả VTT có giữ encoding của tệp TTML không?

Không. VTT 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.

Công cụ liên quan