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

Chuyển JSON sang SBV

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)

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

SBV chỉ có một dòng mốc thời gian rồi tới chữ, nên kiểu chữ, 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 SBV

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

0:00:00.000,0:00:02.000
Hello world.
Second line.

0:00:02.500,0:00:04.000
Plain line.
<i>Styled</i> line.

0:00:04.500,0: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ả

0:00:00.000,0:00:01.000
First.

0:00:01.000,0:00:02.000
Second.

0:00:02.000,0: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

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

Không theo nghĩa bảng kiểu: mảng `tags` và bảng `styles` bị bỏ. Nếu JSON mô tả nhấn mạnh bằng thẻ trong chữ, phần thẻ đó vẫn nằm trong dòng SBV; còn kiểu có tên thì mất vì SBV không có bảng kiểu.

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

Không. Đối tượng `position` của mỗi cue bị bỏ vì SBV không nói được phụ đề vẽ ở đâu; 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.

Mốc karaoke trong JSON ra sao khi chuyển sang SBV?

Mốc karaoke bị bỏ, chữ thì ở lại. Các span đánh dấu lúc từng âm tiết sáng lên không có cú pháp tương đương trong SBV, nên âm tiết ra thành chữ thường trong dòng.

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

Mỗi cue là một dòng chứa hai mốc thời gian, rồi tới phần chữ; không có số thứ tự và không có tiêu đề tệp. Một cue JSON thành một cue SBV cùng thứ tự.

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

Có, tới mili giây. JSON ghi `4126` và SBV ghi `0:00:04.126`; 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.

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

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ụ đề nên trình phát hiển thị cùng lúc.

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

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

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

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

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