เพิ่ม BOM ให้ไฟล์คำบรรยาย
หรือวางข้อความคำบรรยาย
ตัวเลือก
BOM คือสามไบต์ที่จุดเริ่มต้นไฟล์ซึ่งบอกว่าไฟล์เข้ารหัสด้วยอะไร มันมองไม่เห็นในโปรแกรมแก้ไขและโปรแกรมเล่นทุกตัว ไม่กินพื้นที่บนจอ และไม่มีอะไรในคำบรรยายเปลี่ยนเมื่อเพิ่มหรือลบมัน มีเครื่องมือสองชนิดที่สนใจมัน: โปรแกรม Windows ที่เขียนคำบรรยายซึ่งใส่ไว้เป็นค่าเริ่มต้น และตัวแยกไฟล์ที่เข้มงวดในไปป์ไลน์บิลด์ซึ่งปฏิเสธไฟล์ที่เริ่มด้วยมัน หน้านี้เปิดช่องในสถานะที่ชื่อหน้าบอกไว้ คุณจึงสลับได้หากไฟล์ของคุณกลายเป็นอีกแบบ ไฟล์ UTF-16 มี BOM เสมอ เพราะนั่นคือวิธีที่ตัวอ่านรู้ว่ากำลังดูลำดับไบต์แบบใด — การขอให้ลบในกรณีนั้นจึงปล่อยมันไว้
เฟรมเรตที่ใช้คำนวณเวลา ในหน้าเกี่ยวกับรูปแบบ ช่องนี้คือสิ่งที่ MicroDVD ต้องการ เพราะมันเก็บเวลาเป็นหมายเลขเฟรม ในหน้าแปลงเฟรมเรต ช่องนี้คือเฟรมเรตที่ไฟล์ถูกตั้งเวลาไว้ — เวอร์ชันที่คำบรรยายถูกทำขึ้นมา — และช่องที่สองของหน้ารับเฟรมเรตของวิดีโอที่คุณจะใช้กับคำบรรยายนี้ ค่าที่พบทั่วไปคือ 23.976, 24, 25, 29.97, 30, 50, 59.94 และ 60 หากใส่ผิดจะเลื่อนไทม์ไลน์ทั้งหมด และในหน้าแปลงเฟรมเรตจะเลื่อนด้วยอัตราส่วน ไม่ใช่ด้วยจำนวนคงที่
เครื่องหมายลำดับไบต์คืออักขระหนึ่งตัว U+FEFF ที่นั่งอยู่หน้าทุกสิ่งทุกอย่างในไฟล์ ใน UTF-8 มันกินสามไบต์คือ EF BB BF และเป็นสิ่งแรกที่ตัวอ่านเห็น ผลลัพธ์ของหน้านี้จึงดูไม่ต่างจากเดิมเลย คิวเดิม ไทม์โค้ดเดิม การขึ้นบรรทัดเดิม และมีเครื่องหมายหนึ่งตัวอยู่หน้าอักขระตัวแรก เหตุผลที่คนต้องการมันคือเครื่องหมายนี้เป็นวิธีที่ไฟล์บอกว่าเป็น UTF-8 โดยไม่ต้องพูด โปรแกรมที่เปิดไฟล์คำบรรยายต้องเดาว่าไฟล์เข้ารหัสแบบใด และหลายโปรแกรมตัดสินจากไบต์แรกแทนที่จะลองอ่านทั้งไฟล์ เช่นโปรแกรมเล่นรุ่นเก่าบนวินโดวส์ เครื่องมือสร้างแผ่น และสคริปต์ที่อ่านบรรทัดแรก ถ้าให้เครื่องหมายไป ชื่อที่มีวรรณยุกต์ เครื่องหมายคำพูดโค้ง หรืออักษรกรีกก็ออกมาถูกต้อง ถ้าไม่มี เครื่องหมายเดียวกันนั้นอาจถูกอ่านตามโค้ดเพจท้องถิ่นของระบบและกลายเป็นอักขระอื่นไปเลย
ทิศทางตรงข้ามคือสิ่งที่คนเจอก่อน โดยปกติ ไฟล์ที่มีเครื่องหมายถูกเปิดด้วยเครื่องมือที่ไม่คาดคิดว่าโอจจะเจอ เครื่องมือนั้นอ่านสามไบต์เป็นสามอักขระและแสดงเป็นก้อนสัญลักษณ์เล็ก ๆ ที่ต้นบรรทัดแรก ถ้าคุณกำลังเจออาการนั้น หน้านี้ไม่ใช่คำตอบ เพราะต้องลบเครื่องหมายไม่ใช่เพิ่ม และหน้านี้ไม่แตะการขึ้นบรรทัดแบบ CRLF ไม่แตะหมายเลขคิว ไม่แตะไทม์โค้ด และไม่ตัดสินใจเรื่องการเข้ารหัสของไฟล์ให้ สิ่งที่มันทำคือเพิ่มอักขระหนึ่งตัวที่ต้นไฟล์ และถ้ามีอยู่แล้วก็ปล่อยไฟล์ไว้แทนที่จะเพิ่มตัวที่สอง การรันสองครั้งจึงให้ผลเท่าการรันครั้งเดียว รองรับทั้งสิบสองรูปแบบเพราะเครื่องหมายเป็นเรื่องของไบต์ต้นไฟล์และไม่รู้จักคิวเลย ไม่มีการอัปโหลด
ตัวอย่าง
ไฟล์ SRT แบบ ASCII ที่มีเครื่องหมายอยู่ด้านหน้า
ข้อมูลนำเข้า
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
ผลลัพธ์
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
ข้อความที่คาดหวังเริ่มด้วยอักขระที่มองไม่เห็นคือ U+FEFF สามไบต์ EF BB BF ก่อนเลข 1 ของคิวแรก สองบานจึงดูเหมือนกันและไม่ใช่ข้อผิดพลาดในการแสดงผล ความต่างของสองไฟล์ยาวสามไบต์และไม่มีไบต์ใดมีรูปร่าง เปิดไฟล์ที่ดาวน์โหลดในโปรแกรมที่บอกการเข้ารหัสหรือดูไบต์แรกในโปรแกรมดูไบต์
ไฟล์วินโดวส์ที่เพิ่มเครื่องหมายและคงการขึ้นบรรทัด CRLF
ข้อมูลนำเข้า
1
00:00:01,000 --> 00:00:02,000
The room is dark.
ผลลัพธ์
1
00:00:01,000 --> 00:00:02,000
The room is dark.
สองสิ่งที่เครื่องมือคำบรรยายบนวินโดวส์มักเขียนคือเครื่องหมายกับการขึ้นบรรทัด CRLF ซึ่งทำให้คนสับสนว่าเป็นเรื่องเดียวกัน แต่แยกกัน และหน้านี้เขียนเฉพาะอย่างแรก ทุก carriage return ในไฟล์ที่คาดหวังเป็นของอินพุตเอง และเครื่องหมายถูกเพิ่มไว้ข้างหน้า หน้าที่เขียนการขึ้นบรรทัดใหม่ไปด้วยจะจัดรูปแบบไฟล์ทุกไฟล์ที่ส่งเข้ามาอย่างเงียบ ๆ
ไฟล์ที่มีเครื่องหมายอยู่แล้ว
ข้อมูลนำเข้า
1
00:00:01,000 --> 00:00:02,000
Already marked.
ผลลัพธ์
1
00:00:01,000 --> 00:00:02,000
Already marked.
อินพุตมีเครื่องหมายอยู่แล้ว ผลลัพธ์จึงเหมือนอินพุตทุกไบต์และไฟล์มีเครื่องหมายเพียงตัวเดียว เวอร์ชันที่วางเครื่องหมายทับลงไปโดยไม่ลบของเดิมจะให้ไฟล์ที่มีสองตัว และเครื่องหมายซ้อนจะมองไม่เห็นในโปรแกรมแก้ไขทุกตัวแต่เป็นไฟล์คนละไฟล์สำหรับทุกสิ่งที่อ่านไบต์แรก การรันหน้านี้บนไฟล์ที่มีเครื่องหมายแล้วควรเป็นสิ่งที่ทำได้โดยไม่ต้องคิด
คำถามที่พบบ่อย
การเพิ่มเครื่องหมายลำดับไบต์ให้ไฟล์คำบรรยายเปลี่ยนอะไรจริง ๆ
อักขระหนึ่งตัวที่ต้นไฟล์ U+FEFF ซึ่งเขียนเป็นสามไบต์ EF BB BF ใน UTF-8 ไม่มีคิวถูกเพิ่ม ลบ หรือแก้ไข ไม่มีไทม์โค้ดขยับ หมายเลขคิวและการขึ้นบรรทัดออกมาเหมือนขาเข้า และข้อความทุกบรรทัดไม่ถูกแตะ ถ้าเทียบสองไฟล์จะเห็นว่าต่างกันเฉพาะบรรทัดแรกและต่างกันสามไบต์ที่ต้นบรรทัด
ทำไมสองบานบนหน้าเพิ่ม BOM นี้ดูเหมือนกันทุกอย่าง
เพราะอักขระที่เพิ่มไม่มีรูปร่าง U+FEFF เป็นช่องว่างความกว้างศูนย์ที่ห้ามตัดบรรทัด บานที่แสดงข้อความแบบโปรแกรมเล่นจึงเห็นเหมือนเดิมก่อนและหลัง การเปลี่ยนมีจริงและอยู่ในไฟล์ที่ดาวน์โหลด ความต่างคือสามไบต์แรก ตัวบ่งชี้การเข้ารหัสในโปรแกรมแก้ไขหรือโปรแกรมดูไบต์ที่เห็น EF BB BF คือที่ที่ต้องดู ไม่ใช่ตัวบท
เครื่องมือเพิ่ม BOM ให้คำบรรยายนี้ปลอดภัยที่จะรันซ้ำบนไฟล์เดิมไหม
ปลอดภัย หน้าลบเครื่องหมายที่มีอยู่ก่อนเขียนของตัวเอง ไฟล์ที่มีอยู่แล้วจึงกลับมาไม่เปลี่ยนและไฟล์ที่ยังไม่มีได้หนึ่งตัว การรันสองครั้งให้ไฟล์เดียวกับการรันครั้งเดียว ซึ่งหมายความว่าไฟล์ที่ผ่านหน้านี้แล้วผ่านเครื่องมือที่เพิ่มเครื่องหมายที่สองสามารถทำความสะอาดได้ด้วยการส่งผ่านอีกครั้ง เพราะเหลือรอดเพียงตัวเดียว
เครื่องหมายยังอยู่ไหมถ้าแปลงไฟล์คำบรรยายเป็นรูปแบบอื่นต่อมา
ไม่ถูกพาไปโดยหน้าที่แปลงรูปแบบของเว็บนี้ ซึ่งเขียน UTF-8 ธรรมดาโดยไม่มีเครื่องหมาย ดังนั้นเครื่องหมายที่เพิ่มที่นี่จึงไม่ข้ามการเปลี่ยนรูปแบบ ลำดับงานที่ถูกคือแปลงก่อนแล้วค่อยเพิ่มเครื่องหมายเป็นขั้นสุดท้ายก่อนส่งมอบ ซึ่งเป็นลำดับที่สมเหตุสมผลกว่าอยู่แล้ว เพราะเครื่องหมายเป็นสมบัติของไฟล์ที่เสร็จแล้วไม่ใช่ของเนื้อหาคำบรรยาย
การเพิ่มเครื่องหมายให้ไฟล์คำบรรยายเปลี่ยนการขึ้นบรรทัดไหม
ไม่เปลี่ยน เครื่องหมายแบบละตินหรือ UTF-8 เป็นอักขระหนึ่งตัวที่วางไว้หน้าไบต์แรกของไฟล์และไม่มีผลกับสิ่งที่ตามมา ไฟล์วินโดวส์ที่เต็มไปด้วย CRLF ยังคงเป็น CRLF ไฟล์ยูนิกซ์ยังคงเป็น LF และไฟล์ที่มีการขึ้นบรรทัดผสมก็ออกมาด้วยส่วนผสมเดิม การเปลี่ยนการขึ้นบรรทัดเป็นอีกหน้าหนึ่ง และการให้หน้าเดียวทำทั้งสองอย่างเงียบ ๆ เป็นความคิดที่ไม่ดี
รูปแบบคำบรรยายใดใส่เครื่องหมายลำดับไบต์ได้
ทั้งสิบสองรูปแบบที่เว็บนี้จัดการ ได้แก่ SRT WebVTT ASS SSA SBV SAMI LRC MicroDVD TTML JSON และ CSV เครื่องหมายเป็นเรื่องของไบต์ต้นไฟล์ไม่ใช่ของรูปแบบคำบรรยาย จึงไม่มีอะไรเฉพาะรูปแบบให้ตั้งค่าให้ถูก แม้แต่บทถอดเสียงข้อความล้วนที่ไม่มีไทม์ไลน์เลยก็ใส่ได้