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

Chuyển SMI sang JSON

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

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

1 thứ bị bỏ hoặc cần một quyết đị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 SMI sang JSON. Bạn thả tệp vào hoặc dán văn bản, rồi nhận lại phiên bản JSON. Quá trình chạy trong trình duyệt: không tải tệp lên máy chủ và không cần tài khoản.

Hai định dạng không lưu cùng một thứ: JSON giữ được thời gian và văn bản của mỗi cue, nhưng các khối ngoài cue của SAMI như <STYLE>, Class hay phần đầu tài liệu không có chỗ trong cấu trúc. Danh sách mất mát phía trên tính từ khả năng của hai định dạng.

Một tệp hay cả mùa phim đề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ụ

Một tệp SMI điển hình, chuyển sang JSON

Đầu vào

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Kết quả

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3000,
      "lines": [
        "Hello there."
      ]
    },
    {
      "start": 3500,
      "end": 6000,
      "lines": [
        "How are you?",
        "Fine, thanks."
      ]
    }
  ]
}

Bị mất trong kết quả: các thành phần ngoài cue của SAMI. Phần còn lại khớp từng dòng.

Cùng phép chuyển đổi với một tệp lộn xộn

Đầu vào

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Kết quả

{
  "version": 1,
  "cues": [
    {
      "start": 2500,
      "end": 9000,
      "lines": [
        "Line one",
        "Line two"
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Tom &amp; Jerry"
      ]
    }
  ]
}

Đây là kiểu hỏng thật của tệp ngoài đời — thẻ đóng thiếu, Class trỏ vào kiểu không tồn tại, kết thúc dòng lẫn lộn. So với ví dụ gọn ở trên để thấy bộ phân tích bỏ qua được gì.

Câu hỏi thường gặp

JSON xuất ra từ SMI có giữ khối STYLE của SAMI không?

Không. Mảng cues chỉ có start, end và lines đối với cue từ SMI; định nghĩa trong <STYLE>, thuộc tính Class và phần đầu tài liệu bị bỏ. Đó là mất mát được liệt kê phía trên.

Mốc thời gian SMI khi sang JSON có chính xác đến mili giây không?

Có. SMI ghi Start=4126 và JSON ghi số nguyên 4126; không làm tròn. Cue dài 2,9 giây vẫn giữ đúng độ dài trong cấu trúc JSON.

Cue SMI nhiều dòng được biểu diễn thế nào trong JSON?

Mỗi dòng thành một phần tử trong mảng lines của cùng một cue. Cách này giữ được quan hệ giữa các dòng, khác với việc tách thành nhiều cue riêng.

Các thẻ <SYNC> của SMI thành gì trong JSON?

Mỗi khối <SYNC> có nội dung thành một cue với start và end. Khối <SYNC> chứa <P>&nbsp; dùng để xóa màn hình không tạo cue, nên không xuất hiện trong mảng cues.

JSON có giữ thứ tự cue của SMI không?

Có, các cue được sắp theo start tăng dần. Nếu tệp SMI gốc đặt <SYNC> lộn xộn, JSON xuất ra sẽ được xếp lại; nội dung không đổi.

Chuyển JSON ngược về SMI mất gì?

Mất khả năng tái tạo kiểu dáng và vị trí của SAMI: JSON không có chỗ cho Class hay <STYLE>. Chiều SMI sang JSON đã bỏ các khối đó, nên chi phí chỉ lộ ra khi quay lại.

JSON do SMI tạo ra dùng bảng mã và kết thúc dòng nào?

UTF-8, không BOM, kết thúc dòng Unix. Mọi tệp SMI, kể cả UTF-16 hay bảng mã một byte, đều được giải mã trước khi ghi kết quả.

Công cụ liên quan