แปลง JSON เป็น SMI
หรือวางข้อความคำบรรยาย
การแปลงนี้เปลี่ยนอะไร
2 อย่างถูกตัดทิ้งหรือต้องตัดสินใจ
- รูปแบบ
รูปแบบตัวอักษรทั้งหมดยกเว้นตัวหนาและตัวเอียง (สี เส้นขอบ เงา ระยะขอบ)
- Karaoke
จังหวะ Karaoke (ไฮไลต์ต่อพยางค์)
รายการนี้มาจากเมทริกซ์ความสามารถของสองรูปแบบนี้ ไม่ได้มาจากไฟล์ที่คุณโหลด ไฟล์หนึ่งอาจสูญหายมากกว่าหากใช้คุณสมบัติที่รูปแบบอนุญาตแต่เมทริกซ์ไม่ได้จำลอง
หน้านี้แปลง JSON เป็น SMI คุณลากไฟล์มาวางหรือวางข้อความลงไป แล้วรับไฟล์ SMI กลับคืน การแปลงทั้งหมดทำงานในเบราว์เซอร์ ไม่มีการอัปโหลดและไม่ต้องมีบัญชี
สองรูปแบบนี้เก็บข้อมูลไม่เหมือนกัน และส่วนต่างไม่ใช่เรื่องผิวเผิน: สไตล์และคาราโอเกะไม่มีที่อยู่ใน SMI รายการด้านบนคำนวณจากสิ่งที่แต่ละรูปแบบแสดงออกได้ ไม่ได้มาจากไฟล์ของคุณ คำตอบจึงเหมือนเดิมก่อนคุณเปิดไฟล์ ไฟล์เดียวหรือทั้งซีซันก็ได้: คิวจะประมวลผลตามลำดับและดาวน์โหลดผลลัพธ์รวมเป็น ZIP เดียว
ตัวอย่าง
ไฟล์ JSON ทั่วไป แปลงเป็น SMI
ข้อมูลนำเข้า
{
"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"
}
]
}
ผลลัพธ์
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>Hello world.<br>Second line.
<SYNC Start=2000>
<P>
<SYNC Start=2500>
<P>Plain line.<br><i>Styled</i> line.
<SYNC Start=4000>
<P>
<SYNC Start=4500>
<P>Roger: I am here.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
สิ่งที่หายไปในผลลัพธ์นี้: สไตล์และคาราโอเกะ ส่วนที่เหลือตรงกันทุกบรรทัด
การแปลงเดียวกันกับข้อมูลที่ยุ่งเหยิง
ข้อมูลนำเข้า
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
ผลลัพธ์
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>First.
<SYNC Start=1000>
<P>
<SYNC Start=1000>
<P>Second.
<SYNC Start=2000>
<P>
<SYNC Start=2000>
<P>Third.
<SYNC Start=3000>
<P>
</BODY>
</SAMI>
นี่คือความเสียหายแบบที่ไฟล์จริงมี — การขึ้นบรรทัดใหม่ปนกัน ช่องว่างเกิน และช่องที่เว้นว่าง เทียบกับตัวอย่างเรียบร้อยด้านบนเพื่อดูว่าตัวแยกวิเคราะห์ให้อภัยอะไรได้บ้าง
คำถามที่พบบ่อย
สไตล์ใดรอดจาก JSON ไป SMI?
การเน้นถูกลงในข้อความเป็นแท็ก: ตัวหนา ตัวเอียง ขีดเส้นใต้ และสี ออกมาเป็น `<b>`, `<i>`, `<u>` และ `<font color="…">` ซึ่งเบราว์เซอร์ตอบสนอง สิ่งที่ไฟล์ SMI ไม่พาไปคือตารางสไตล์ที่ JSON พึ่งพา — ฟอนต์ ขนาด เส้นขอบ เงา และระยะขอบในตาราง `styles` หายทั้งหมด และหน้าที่ฝังคำบรรยายจะจัดสไตล์เองด้วย CSS ของมัน
คาราโอเกะจาก JSON ไป SMI เป็นอย่างไร?
เวลาไป คำยังอยู่ คาราโอเกะอยู่ในช่วงคาราโอเกะที่คิว JSON พาไป ซึ่งบอกว่าแต่ละพยางค์สว่างเมื่อไร และ SMI บันทึกช่วงเวลาภายในบรรทัดไม่ได้ เครื่องหมายจึงถูกถอดออก และพยางค์ออกมาเป็นข้อความ SMI ธรรมดา
ผลลัพธ์มีหน้าตาอย่างไรเมื่อ JSON กลายเป็น SMI?
เหมือน SMI: ไม่มีเลขคิวและไม่มีบรรทัดไทม์โค้ด — ทุกคิวคือแท็ก `<SYNC Start=…>` ที่มีข้อความอยู่ใน `<P>` ใต้ลงไป และเพราะ SYNC แทนที่สิ่งที่อยู่บนจอ จึงมีบล็อก `<P> ` ตามมาทันทีเพื่อคืนจอให้ว่าง ทุกคิว JSON กลายเป็นหนึ่งคิว SMI ตามลำดับเดิม ด้วยข้อความเดิม
ไทม์โค้ด JSON แม่นยำในไฟล์ SMI ไหม?
แม่นถึงมิลลิวินาที — ซึ่งละเอียดที่สุดที่ทั้งสองรูปแบบทำได้ JSON เขียนเวลาเป็น `4126` และ SMI เขียนช่วงเวลาเดียวกันเป็น `Start=4126` ไม่มีการปัดหรือเลื่อนระหว่างกัน และคิวที่เคยอยู่บนจอ 2.9 วินาทีก็ยังคงเป็น 2.9 วินาที
คิว JSON ที่มีสองบรรทัดออกมาเป็นอย่างไรใน SMI?
เป็นสองบรรทัดที่มี `<br>` คั่นกลาง ซึ่งเป็นวิธีที่ SAMI เขียนการขึ้นบรรทัดแบบบังคับ คู่บรรทัดยังคงอยู่ — สองบรรทัดของ JSON ยังเป็นคำบรรยายเดียวกันในผลลัพธ์ และโปรแกรมเล่นแสดงพร้อมกัน
คิว JSON ยังคงลำดับเดิมในผลลัพธ์ SMI หรือไม่?
ใช่ และถูกเรียงตามเวลาเริ่มระหว่างทาง — เริ่มก่อนอยู่ก่อน ซึ่งเป็นลำดับที่ทุกรูปแบบบนเว็บนี้คาดหวังและโปรแกรมเล่นอ่าน ถ้าไฟล์ JSON ของคุณเรียงคิวผิดลำดับ ผลลัพธ์ SMI จะจัดกลับให้ นั่นคือการเปลี่ยนโครงสร้างไฟล์ ไม่ใช่เนื้อหา และเป็นเจตนา
แปลง SMI กลับเป็น JSON ได้ไหม?
ได้ และมีรายการของมันเอง: การแปลง SMI เป็น JSON สูญเสียข้อมูลเฉพาะรูปแบบ ซึ่งเป็นรายการที่ต่างจากรายการด้านบน เพราะสองรูปแบบเก็บสิ่งต่างกัน
ผลลัพธ์ SMI เก็บ encoding เดิมของไฟล์ JSON ไว้ไหม?
ไม่ — ผลลัพธ์เป็น UTF-8 ใช้การขึ้นบรรทัดแบบ Unix และไม่มี byte-order mark ไม่ว่าไฟล์ JSON จะใช้แบบไหน ไฟล์ที่มาเป็น UTF-16 หรือ encoding แบบไบต์เดียวของ Windows จะถูกถอดรหัสตอนอ่าน (แผงผลลัพธ์จะบอกเมื่อเกิดกรณีนั้น) สิ่งที่ออกมาคือ SMI แบบ UTF-8 เหมือนกันทุกครั้ง