ข้ามไปยังเนื้อหาหลัก
SubtitleMatrix

แปลง SRT เป็น JSON

หรือวางข้อความคำบรรยาย

การแปลงนี้เปลี่ยนอะไร

ไม่มีอะไรสูญหายในทิศทางนี้ — ทุกคุณสมบัติของรูปแบบต้นทางมีที่ไปในรูปแบบปลายทาง

รายการนี้มาจากเมทริกซ์ความสามารถของสองรูปแบบนี้ ไม่ได้มาจากไฟล์ที่คุณโหลด ไฟล์หนึ่งอาจสูญหายมากกว่าหากใช้คุณสมบัติที่รูปแบบอนุญาตแต่เมทริกซ์ไม่ได้จำลอง

หน้านี้แปลงไฟล์ SRT เป็น JSON ในเบราว์เซอร์ ไม่มีการอัปโหลดและไม่ต้องมีบัญชี คุณลากไฟล์เดียวหรือทั้งฤดูกาลเข้ามาได้ คิวทำงานตามลำดับ ยกเลิกกลางทางได้ และดาวน์โหลดผลลัพธ์ทั้งหมดเป็น ZIP เดียว

ในทิศทางนี้ไม่มีข้อมูลสูญหาย ทุกสิ่งที่ SRT เก็บได้มีสิ่งที่เทียบเท่าใน JSON ผลลัพธ์เป็นเอกสาร JSON ที่มีหมายเลขเวอร์ชันและอาร์เรย์ cues โดยเวลาเก็บเป็นจำนวนเต็มมิลลิวินาทีและแต่ละบรรทัดแยกกัน ข้อความ ลำดับคิว และไทม์ไลน์จึงยังอยู่ครบ

ตัวอย่าง

ไฟล์ SRT ทั่วไป แปลงเป็น JSON

ข้อมูลนำเข้า

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

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

ผลลัพธ์

{
  "version": 1,
  "cues": [
    {
      "id": "1",
      "start": 1000,
      "end": 3500,
      "lines": [
        "Hello there."
      ]
    },
    {
      "id": "2",
      "start": 3500,
      "end": 6000,
      "lines": [
        {
          "text": "Whispering now.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 10
            }
          ]
        },
        "And a second line."
      ]
    },
    {
      "id": "3",
      "start": 6000,
      "end": 9250,
      "lines": [
        {
          "text": "Bold statement.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            }
          ]
        }
      ]
    }
  ]
}

ไม่มีข้อมูลสูญหายในผลลัพธ์นี้: เทียบสองฝั่งทีละบรรทัด

การแปลง SRT เป็น JSON บนไฟล์ที่มีปัญหา

ข้อมูลนำเข้า

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

ผลลัพธ์

{
  "version": 1,
  "cues": [
    {
      "id": "1",
      "start": 1000,
      "end": 3500,
      "lines": [
        {
          "text": "Bold and italic.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            },
            {
              "kind": "italic",
              "start": 9,
              "end": 15
            }
          ]
        }
      ]
    },
    {
      "id": "2",
      "start": 3500,
      "end": 6000,
      "lines": []
    },
    {
      "id": "3",
      "start": 8000,
      "end": 9000,
      "lines": [
        "Last one."
      ]
    }
  ]
}

ไฟล์จริงมักมีอาการแบบนี้ — การขึ้นบรรทัดใหม่แบบผสม ช่องว่างเกิน และฟิลด์ที่เว้นว่าง เทียบกับตัวอย่างแรกเพื่อดูว่าตัวแยกวิเคราะห์ยอมรับอะไรได้บ้าง

คำถามที่พบบ่อย

ผลลัพธ์ JSON จาก SRT ใช้สคีมาอะไร

สคีมาของเว็บนี้เอง ซึ่งอธิบายด้วยตัวอย่างในแผงด้านบน: หมายเลขเวอร์ชัน ตามด้วยอาร์เรย์ของคิว แต่ละคิวมี id, start และ end เป็นมิลลิวินาที และรายการบรรทัด ไม่มีเมทาดาทาที่ซ่อนอยู่และไม่ขึ้นกับรูปแบบของบุคคลที่สาม

ทำไม SRT ถึงเก็บเวลาเป็นมิลลิวินาทีเมื่อกลายเป็น JSON

เพื่อให้ไฟล์ใช้งานได้โดยไม่ต้องแยกวิเคราะห์ก่อน การบวกเวลา การเปรียบเทียบ หรือการเรียงตามเวลาล้วนเป็นการคำนวณจำนวนเต็มธรรมดา ขณะที่สตริงอย่าง 00:00:01,000 ต้องถอดรหัสก่อนและถอดผิดได้

รูปแบบตัวอักษรของ SRT ถูกแทนใน JSON อย่างไร

บรรทัดธรรมดายังเป็นสตริงธรรมดา บรรทัดที่มีรูปแบบจะเป็นออบเจกต์ที่มี text และอาร์เรย์ tags โดยแต่ละแท็กบอกชนิดและตำแหน่งเริ่มกับจบในข้อความนั้น แปลง JSON กลับแล้วรูปแบบจะถูกเขียนออกมาอีกครั้ง

แก้ไฟล์ JSON ที่แปลงจาก SRT ด้วยมือปลอดภัยไหม

ปลอดภัย และการแปลงกลับคือการตรวจสอบ ถ้าไฟล์แยกวิเคราะห์ได้ การแปลงจะสร้างคิวด้วยเวลาที่คุณใส่ไว้ การแปลงไปกลับผ่านตัวแปลงจึงเป็นวิธีหาแก้คำผิดได้เร็ว

นำ JSON จาก SRT ไปใช้ในสคริปต์ได้ไหม

ได้ นั่นคือจุดประสงค์ของมัน อ่านอาร์เรย์ cues เอา start กับ end เป็นตัวเลข แล้วต่อบรรทัด — บรรทัดเป็นได้ทั้งสตริงหรือออบเจกต์ที่ฟิลด์ text เก็บคำ

เครื่องมือที่เกี่ยวข้อง