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

Chuyển TTML sang SRT

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ị (đậm, nghiêng, màu, viền, bóng)

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

SRT chỉ có cue đánh số với mốc thời gian dấu phẩy; bảng kiểu, vùng và prolog XML của TTML không có chỗ đứng, còn phần nhấn mạnh nằm trong câu được ghi thành 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 SRT

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

1
00:00:01,000 --> 00:00:03,500
Hello <i>there</i>.

2
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ả

1
00:00:01,500 --> 00:00:03,500
Loaded from an offset and a duration.

2
00:00:04,000 --> 00:00:06,500
A coarser clock spelling.

3
00:00:07,000 --> 00:00:08,480
Frames, at 25fps.

4
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

Chữ đậm và in nghiêng trong TTML có sống sót sang SRT không?

Phần nhấn mạnh đi theo, bảng kiểu thì không. Định dạng gắn với một đoạn chữ — đậm, nghiêng, gạch chân, màu — được ghi vào văn bản SRT bằng thẻ `<i>`, `<b>`, `<u>`, `<font color="…">`. Còn font, cỡ chữ, viền, bóng và lề khai báo toàn cục trong TTML thì mất.

Vị trí trên màn hình của TTML ra sao khi chuyển sang SRT?

SRT không nói được phụ đề vẽ ở đâu, 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 SRT?

Bị bỏ. Khai báo XML, namespace, bảng kiểu có tên (`tts:color`, `tts:fontWeight`), bảng vùng (`tts:origin`, `tts:extent`) và `<metadata>` đều nằm trong `<head>` của TTML, còn SRT chỉ có cue. Nhấn mạnh viết trong câu — như `<span tts:fontStyle="italic">` — thì vẫn được ghi bằng cú pháp SRT.

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

Mỗi cue có một số thứ tự phía trên dòng mốc thời gian, bắt đầu từ 1. Một cue TTML thành một cue SRT, 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 SRT không?

Có, tới mili giây — giới hạn của cả hai định dạng. TTML ghi `00:00:04.126` và SRT ghi `00:00:04,126`; chỉ dấu phân cách phần lẻ đổi, không có làm tròn hay dịch chuyển.

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

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ụ đề và 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ả SRT 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 SRT đúng thứ tự; thứ tự dòng thay đổi nhưng chữ và mốc thời gian thì không.

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

Được, và chiều này không mất thêm gì vì SRT giữ ít hơn TTML. Những gì đã mất ở chiều TTML sang SRT thì không dựng lại được: kiểu chữ, vị trí và phần đầu TTML không được ghi trong SRT.

Kết quả SRT có giữ encoding của tệp TTML không?

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