M3U8 / HLS
Apple เป็นคนคิดค้น อุปกรณ์ Apple ทุกเครื่องเล่นมันได้ และไม่มีเครื่องไหนบันทึกมันได้เลย
ไฟล์ .m3u8 เป็นเพลย์ลิสต์ ไม่ใช่วิดีโอ: ข้อความไม่กี่กิโลไบต์ที่รายชื่อส่วนย่อยเล็ก ๆ นับพันชิ้นที่ต้องดึงมาตามลำดับ การออกแบบนี้คือเหตุผลที่ HLS เล่นได้ไร้ที่ติบนอุปกรณ์ Apple ทุกเครื่อง และทำไมการกด "บันทึกไฟล์นี้" ถึงได้แค่เอกสารข้อความ การดาวน์โหลดมันหมายถึงการดึงทุกส่วนย่อยและสร้างไฟล์ใหม่ที่ไม่เคยมีอยู่มาก่อน
30 กรกฎาคม 2569
เปิดได้เองโดย
HLS เป็นข้อกำหนดของ Apple เองและได้รับการรองรับระดับสูงสุดทุกที่ — Safari, AVPlayer, AirPlay สิ่งที่ไม่มีการรองรับที่ไหนในระบบเลยคือการเปลี่ยนสตรีมสดให้กลายเป็นไฟล์บนดิสก์ การเล่นกับการเก็บรักษาเป็นปัญหาคนละเรื่องกันโดยสิ้นเชิง
ข้อเท็จจริง
| ชื่อเต็ม | HTTP Live Streaming; เพลย์ลิสต์เป็น M3U แบบ UTF-8 |
|---|---|
| ประเภท | โปรโตคอลสตรีมมิ่ง ส่งมาในรูปเพลย์ลิสต์ข้อความ |
| นามสกุล | .m3u8 (เพลย์ลิสต์), .ts หรือ .m4s (ส่วนย่อยที่มันชี้ไป) |
| เผยแพร่ | 2009 โดย Apple; กลายเป็นมาตรฐาน RFC 8216 ในปี 2017 |
| ความยาวส่วนย่อยทั่วไป | 2 ถึง 10 วินาทีต่อชิ้น — วิดีโอหนึ่งชั่วโมงคือไฟล์หลายร้อยถึงหลายพันไฟล์ |
| เพลย์ลิสต์หลักกับเพลย์ลิสต์สื่อ | เพลย์ลิสต์หลักบอกระดับคุณภาพ แต่ละระดับชี้ไปยังเพลย์ลิสต์สื่อของส่วนย่อยจริง |
| วิดีโอในส่วนย่อย | H.264 หรือ HEVC บางครั้งเป็น AV1 |
| สตรีมสด | เพลย์ลิสต์ถูกดึงใหม่ทุกไม่กี่วินาทีและยาวขึ้นเรื่อย ๆ ตามที่การถ่ายทอดสดดำเนินต่อไป |
สารบัญ ไม่ใช่หนังสือ
เปิด .m3u8 ในตัวแก้ไขข้อความและคุณจะพบไม่กี่สิบบรรทัด: ส่วนหัว พารามิเตอร์บางอย่าง และรายชื่อที่อยู่ยาว ๆ นั่นคือไฟล์ทั้งหมด วิดีโออยู่ที่อื่น ถูกตัดเป็นส่วนย่อยละไม่กี่วินาที วางอยู่บนเซิร์ฟเวอร์เป็นไฟล์เล็ก ๆ แยกกันนับพันไฟล์
เครื่องเล่นอ่านรายการ ดึงส่วนย่อยแรก ๆ มา เริ่มเล่น และดึงต่อไปเรื่อย ๆ ล่วงหน้าตัวเอง เมื่อการเชื่อมต่อของคุณช้าลง มันจะสลับไปใช้ตัวเลือกคุณภาพต่ำกว่าที่ระบุไว้ในเพลย์ลิสต์หลัก — ชุดส่วนย่อยชุดใหม่ที่บิตเรตต่างออกไป — และทำระหว่างรอยต่อของส่วนย่อยเพื่อให้คุณเห็นการเปลี่ยนคุณภาพแทนที่จะเห็นอาการค้าง การสลับแบบปรับตัวได้นี้คือเหตุผลที่ฟอร์แมตนี้ชนะ
มันยังอธิบายสิ่งที่ทำให้คนแปลกใจได้ด้วย: ไม่มีไฟล์เดียวให้ครอบครองเลย ภาพยนตร์ที่คุณกำลังดูอยู่ไม่มีอยู่จริงในฐานะวัตถุชิ้นเดียวที่ไหนเลย มันคือชิ้นส่วนนับพันชิ้นและชุดคำสั่ง
ทำไมการบันทึกมันถึงได้แค่ไฟล์ข้อความ
เพราะนั่นคือสิ่งที่คุณบันทึกไว้จริง ๆ เบราว์เซอร์ขอที่อยู่ที่คุณให้ไป ได้รับเพลย์ลิสต์สี่กิโลไบต์กลับมา แล้วเขียนมันลงดิสก์ ทุกอย่างที่คุณดูจริง ๆ มาถึงผ่านคำขอนับพันครั้งแยกกันที่การบันทึกไม่รู้อะไรเลยเกี่ยวกับมัน
การดาวน์โหลด HLS อย่างถูกต้องหมายถึงทำสิ่งที่เครื่องเล่นทำ แต่ลงดิสก์แทน: อ่านเพลย์ลิสต์ เลือกตัวเลือกคุณภาพ ดึงทุกส่วนย่อยตามลำดับ แล้วเย็บมันเข้าด้วยกันเป็นคอนเทนเนอร์เดียว ขั้นตอนสุดท้ายนี้เรียกว่า การรีมักซ์ — วิดีโอและเสียงไม่ถูกเข้ารหัสใหม่ แค่ถูกเขียนใหม่ลงใน MP4 เดียวพร้อมดัชนีที่เหมาะสมเพื่อให้เลื่อนดูผลลัพธ์ได้
มีสองเรื่องที่ทำให้สิ่งนี้ยากกว่าที่ฟังดู ที่อยู่ของส่วนย่อยมักเป็นแบบสัมพัทธ์และเปลี่ยนไปในแต่ละเซสชัน ดังนั้นลิสต์ที่ดึงมาเมื่อชั่วโมงก่อนอาจใช้ไม่ได้แล้ว และสตรีมมักถูกเข้ารหัสด้วยกุญแจที่อ้างอิงไว้ในเพลย์ลิสต์ ส่งมาแยกต่างหาก และหมุนเวียนระหว่างการเล่น
การนำไฟล์ลงอุปกรณ์
ใช้เฉพาะกับสตรีมที่คุณมีสิทธิ์เก็บไว้เท่านั้น — การบันทึกของคุณเอง การสมัคร IPTV ของคุณเอง ผู้แพร่ภาพที่เปิดให้ดาวน์โหลด สิ่งต่อไปนี้คือกลไกทำงานอย่างไร ไม่ใช่การอนุญาตให้ใช้กับที่ไหนก็ได้
- ให้เอนจินดาวน์โหลดจัดการส่วนย่อยให้
การดึงไฟล์นับพันไฟล์และรีมักซ์มันคืองานที่ตัวดาวน์โหลดของ FoxDL ทำกับแหล่ง HLS พอดี: มันไล่อ่านเพลย์ลิสต์ ดึงส่วนย่อยแบบขนาน แล้วเขียนออกมาเป็น MP4 เดียวที่เลื่อนดูได้เหมือนไฟล์ปกติ สิ่งที่ได้มาคือไฟล์หนึ่งไฟล์ ไม่ใช่โฟลเดอร์ของชิ้นส่วน
- เลือกไฟล์ตรงเมื่อมีให้
หลายเว็บไซต์ให้ทั้ง HLS และ MP4 แบบต่อเนื่องธรรมดา MP4 คือคำขอเดียว ไฟล์เดียว ไม่ต้องประกอบใหม่ — เป็นตัวเลือกที่ดีกว่าเสมอเมื่อมีให้
- ยอมรับว่าบางอย่างเก็บไว้ไม่ได้
สตรีมที่ป้องกันด้วย DRM — FairPlay, Widevine — ถูกเข้ารหัสตั้งแต่ต้นจนจบและถูกออกแบบมาให้ดาวน์โหลดไม่ได้ ไม่มีเครื่องมือใดเปลี่ยนสิ่งนั้นได้ และเครื่องมือที่อ้างว่าทำได้กำลังโกหกเรื่องบางอย่างอยู่
จุดที่การดาวน์โหลด HLS ผิดพลาดได้
ส่วนย่อยที่ถูกต่อกันโดยไม่รีมักซ์จะได้ไฟล์ที่เล่นได้แต่ไม่มีดัชนี มันเล่นจากต้นและกระโดดไปไหนไม่ได้เลย การรีมักซ์คือการเขียนดัชนีที่แก้ปัญหานี้
เพลย์ลิสต์สดไม่มีจุดจบ — มันเติบโตต่อไปเรื่อย ๆ การดาวน์โหลดมันคือการบันทึก และมันจะหยุดเมื่อคุณสั่งหยุด ไม่ใช่เมื่อไฟล์จบ
ที่อยู่เพลย์ลิสต์มักถูกเซ็นชื่อและจำกัดเวลา .m3u8 ที่บันทึกไว้ตอนเช้ามักจะชี้ไปไม่เจออะไรเลยตอนบ่าย
คำถามเกี่ยวกับฟอร์แมตนี้
ที่มาของข้อเท็จจริงเหล่านี้
- RFC 8216 — HTTP Live Streaming IETF
- HTTP Live Streaming Apple Developer
ฟอร์แมตใกล้เคียง
คลังไฟล์ของคุณ อยู่รวมกันในที่เดียวสักที
ดาวน์โหลดฟรี ไม่ต้องมีบัญชี ไม่ต้องสมัคร ไม่ต้องยื่นข้อมูลอะไรให้ใคร