เจาะลึกโครงสร้างไฟล์ M3U8: เข้าใจแท็ก EXTM3U และการอ่านไฟล์สตรีมมิ่งทีละบรรทัด

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

โครงสร้างไฟล์ M3U8

ตัวอย่างพื้นฐานของไฟล์ M3U8

ในทางปฏิบัติ ไฟล์ M3U8 แบบง่ายๆ จะมีหน้าตาประมาณนี้:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXTINF:10.000,
segment1.ts
#EXTINF:10.000,
segment2.ts
#EXT-X-ENDLIST

นี่ไม่ใช่โค้ดโปรแกรมเมอร์ แต่เป็นข้อความธรรมดา เมื่อเครื่องเล่นอ่าน มันจะวิเคราะห์ตั้งแต่บรรทัดแรก เมื่อเจอ "แท็ก" มันจะตั้งกฎการเล่น และเมื่อเจอชื่อไฟล์หรือลิงก์ มันจะไปดึงวิดีโอส่วนนั้นมา

หากคุณยังไม่แน่ใจเกี่ยวกับบทบาทของ M3U8 ในกระบวนการสตรีมมิ่ง สามารถย้อนกลับไปอ่านได้ที่ 👉 เจาะลึกโปรโตคอล HLS และ M3U8


#EXTM3U คืออะไร?

#EXTM3U คือเครื่องหมายเริ่มต้นของไฟล์ M3U8 ทุกไฟล์

ทำไมต้องมีบรรทัดนี้? บรรทัดนี้บอกเครื่องเล่นว่า "นี่คือรายการเล่น M3U ในรูปแบบส่วนขยาย (Extended)" หากไม่มีบรรทัดนี้ เครื่องเล่นส่วนใหญ่จะละเลยไฟล์นี้ไปเลย มันเหมือนกับบัตรประชาชนของไฟล์นั่นเอง


แท็กเกี่ยวกับเวอร์ชันและกฎการเล่น

หลังจาก #EXTM3U มักจะตามด้วยแท็กที่ขึ้นต้นด้วย #EXT-X- ซึ่งใช้เพื่ออธิบายกฎการเล่น

#EXT-X-VERSION

ใช้ระบุเวอร์ชันของข้อกำหนด HLS ที่รายการเล่นนี้ใช้งาน เช่น #EXT-X-VERSION:3 บอกเครื่องเล่นว่าต้องใช้กฎของเวอร์ชัน 3 ในการตีความคำสั่งต่อไป

#EXT-X-TARGETDURATION

ระบุความยาวสูงสุดของแต่ละเซกเมนต์วิดีโอในรายการเล่น (เป็นวินาที) เช่น :10 หมายความว่าแต่ละช่วงยาวประมาณ 10 วินาที เครื่องเล่นจะใช้ค่านี้ในการจัดจังหวะการทำบัฟเฟอร์ (Buffering)


#EXTINF กับความสัมพันธ์ของไฟล์วิดีโอ

#EXTINF เป็นแท็กที่ปรากฏบ่อยที่สุดใน M3U8

รูปแบบคือ:

#EXTINF:10.000,
segment1.ts

หมายความว่าเซกเมนต์นี้ยาว 10 วินาที และบรรทัดถัดมาคือไฟล์วิดีโอจริงๆ ที่เครื่องเล่นต้องไปดาวน์โหลด


#EXT-X-ENDLIST หมายถึงอะไร?

หมายความว่ารายการเล่นนี้สิ้นสุดแล้ว จะไม่มีเซกเมนต์ใหม่เพิ่มเข้ามาอีก

  • มี ENDLIST: มักใช้กับวิดีโอออนดีมานด์ (VOD) ที่มีความยาวคงที่
  • ไม่มี ENDLIST: มักพบในการไลฟ์สดที่รายการเล่นจะถูกอัปเดตไปเรื่อยๆ

โครงสร้าง Master Playlist และ Media Playlist

ในความเป็นจริง เรามักเจอโครงสร้าง "หลายคุณภาพคุณภาพ" (Multi-bitrate)

Master Playlist

จะไม่ระบุไฟล์วิดีโอโดยตรง แต่จะระบุลิสต์ของ M3U8 คุณภาพต่างๆ เช่น:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
low.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=1280x720
mid.m3u8

Media Playlist

คือไฟล์ M3U8 ที่ถูกเลือกจาก Master Playlist ซึ่งจะมีไฟล์วิดีโอจริงบรรจุอยู่ นี่คือเหตุผลที่ระบบสลับคุณภาพวิดีโออัตโนมัติทำงานได้

หากคุณพบปัญหาการเล่นค้างหรือผิดพลาด สามารถตรวจสอบรายละเอียดเพิ่มเติมได้ที่ 👉 ข้อผิดพลาดทั่วไปของ M3U8 และวิธีแก้ไข หรือหากต้องการทดสอบการเล่น สามารถศึกษาได้ที่ 👉 วิธีเล่น M3U8? คู่มือฉบับสมบูรณ์


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

ลำดับใน M3U8 มีความสำคัญไหม?
สำคัญมาก ลำดับจะกำหนดขั้นตอนการดาวน์โหลดและการเล่น หากลำดับผิดจะทำให้เกิดอาการกระตุกหรือหยุดเล่นได้

เราสามารถแก้ไขไฟล์ M3U8 ด้วยตนเองได้ไหม?
ทางเทคนิคทำได้เพราะเป็นไฟล์ข้อความ แต่การจะเล่นได้ปกติหรือไม่ขึ้นอยู่กับว่าไฟล์วิดีโอเซกเมนต์นั้นยังมีอยู่จริงหรือไม่

ทำไม M3U8 เดียวกันแสดงผลต่างกันในแต่ละเครื่องเล่น?
เพราะแต่ละเครื่องเล่นรองรับแท็กได้ไม่เท่ากัน การเกิดความไม่เข้ากัน (Incompatibility) จึงเป็นเรื่องปกติ

ต้องการทดสอบลิงก์ M3U8 ของคุณทันทีหรือไม่?

🚀 ทดสอบเครื่องเล่น M3U8 ออนไลน์ตอนนี้