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

Chuyển JSON 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)

  • Karaoke

    thời gian karaoke (tô sáng từng âm tiết)

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 JSON 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 giữ được mốc mili giây và phần nhấn mạnh trong câu, nhưng kiểu có tên, vị trí và karaoke của JSON không có chỗ đứng. 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 JSON thông thường, chuyển sang VTT

Đầu vào

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

Kết quả

WEBVTT

1
00:00:00.000 --> 00:00:02.000
Hello world.
Second line.

2
00:00:02.500 --> 00:00:04.000
Plain line.
<i>Styled</i> line.

3
00:00:04.500 --> 00:00:06.000
Roger: I am here.

Phần bị mất trong kết quả này: kiểu chữ, vị trí và karaoke. 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

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Kết quả

WEBVTT

00:00:00.000 --> 00:00:01.000
First.

00:00:01.000 --> 00:00:02.000
Second.

00:00:02.000 --> 00:00:03.000
Third.

Đâ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 JSON sống sót sang VTT?

Phần nhấn mạnh viết trong câu, dưới dạng thẻ `<b>`, `<i>`, `<u>` và `<font color="…">`. Bảng `styles` của JSON thì mất vì VTT không có bảng kiểu; trang nhúng tạo kiểu bằng CSS của nó.

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

Trong phép chuyển này thì không. Đối tượng `position` của mỗi cue bị bỏ vì VTT không nhận thiết lập vị trí từ JSON; mọi cue trở về mặc định của trình phát, thường là đáy khung hình và căn giữa.

Mốc karaoke trong JSON có vào được VTT không?

Không. Các span karaoke cho biết lúc từng âm tiết sáng lên bị bỏ, còn chữ vẫn nằm trong cue VTT. VTT ở đây không có cú pháp karaoke tương đương.

Kết quả JSON 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 JSON thành một cue VTT cùng thứ tự.

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

Có, tới mili giây. JSON ghi `4126` và VTT ghi `00:00:04.126`; không có làm tròn hay dịch chuyển, nên timeline giữ nguyên.

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

Hai phần tử trong mảng `lines` 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à hiển thị cùng lúc.

Các cue JSON có giữ thứ tự trong kết quả VTT không?

Có, và được sắp theo trường `start` trước khi ghi. Tài liệu JSON 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ề JSON được không?

Được, nhưng chiều VTT sang JSON 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 JSON. Danh sách mất mát của chiều ngược khác phía trên.

Kết quả VTT có giữ encoding của tệp JSON 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ể JSON đầ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