HLS กับ DASH: โปรโตคอลสตรีมมิ่งทำงานอย่างไร
ก่อนที่จะมีการสตรีม การดูวิดีโอออนไลน์มีความหมายอย่างหนึ่ง นั่นคือดาวน์โหลดไฟล์ทั้งหมดก่อน จากนั้นจึงเล่น วิดีโอขนาด 500 MB ต้องมาถึงอุปกรณ์ของคุณอย่างสมบูรณ์ แม้ว่าคุณต้องการเพียง 30 วินาทีแรกก็ตาม โปรโตคอลการสตรีมช่วยแก้ปัญหานี้ได้อย่างแน่นอน โดยจะตัดวิดีโอออกเป็นชิ้นเล็ก ๆ และเล่นในขณะที่ส่วนที่เหลือยังดาวน์โหลดอยู่
เซ็กเมนต์: ส่วนประกอบพื้นฐานของการสตรีม
ใช้ HLS (HTTP Live Streaming สร้างโดย Apple) ซึ่งเป็นโปรโตคอลที่พบบ่อยที่สุด: เซิร์ฟเวอร์แบ่งวิดีโอแบบเต็มออกเป็นไฟล์ขนาดเล็กจำนวนมาก เรียกว่าเซ็กเมนต์ ซึ่งโดยทั่วไปจะมีความยาว 2-10 วินาทีและจัดแพ็คเกจเป็น MPEG-TS หรือ fMP4 นอกจากนี้ยังสร้างไฟล์เพลย์ลิสต์ (.m3u8) ที่บันทึกลำดับและที่อยู่ของเซ็กเมนต์ด้วย เครื่องเล่นดึงข้อมูลเพลย์ลิสต์ก่อน จากนั้นจึงดาวน์โหลดส่วนต่างๆ ตามความต้องการ - จบรายการหนึ่งแล้วดึงข้อมูลรายการถัดไป โดยแทบไม่ต้องรอเลย
บิตเรตที่ปรับเปลี่ยนได้: เหตุใดการเล่นจึงไม่หยุดบนเครือข่ายที่อ่อนแอ
HLS และ DASH (Dynamic Adaptive Streaming บน HTTP ซึ่งสนับสนุนโดย Microsoft และอื่น ๆ ) ต่างก็เตรียมเซ็กเมนต์หลายชุดสำหรับวิดีโอเดียวกันที่ความละเอียดและบิตเรตที่แตกต่างกัน - สมมติว่าแต่ละเซ็กเมนต์สำหรับ 1080p, 720p และ 480p - ทั้งหมดแสดงรายการอยู่ในเพลย์ลิสต์หลัก เครื่องเล่นจะตรวจสอบความเร็วการดาวน์โหลดและระดับบัฟเฟอร์แบบเรียลไทม์ โดยจะเปลี่ยนไปใช้บิตเรตที่สูงขึ้นเมื่อเครือข่ายดีและลดลงเมื่อเครือข่ายลดลง ทำให้เล่นได้อย่างต่อเนื่อง นี่คือการสตรีมบิตเรตแบบปรับได้ (ABR) และนี่คือสาเหตุที่วิดีโอเบลอโดยอัตโนมัติเมื่อคุณนั่งรถไฟใต้ดิน
เหตุใดการดาวน์โหลดลิงก์ m3u8 จึงล้มเหลวบ่อยครั้ง
การดาวน์โหลด URL .m3u8 จะทำให้คุณได้รับข้อความจำนวน 2-3 KB โดยตรง ซึ่งเป็นเพลย์ลิสต์ ไม่ใช่ตัววิดีโอ ในการบันทึกวิดีโอจริง เครื่องมือจะต้องแยกวิเคราะห์เพลย์ลิสต์ ดาวน์โหลดทุกส่วน และต่อกลับเข้าด้วยกันตามลำดับ นั่นคือสาเหตุที่ผู้ดาวน์โหลดจำนวนมากไม่รองรับวิดีโอ HLS เลยหรือต้องการขั้นตอน "รวมกลุ่ม" โดยเฉพาะ TakeVid มีการแบ่งส่วนและการรวมอัตโนมัติในตัว ดังนั้นสิ่งที่คุณดาวน์โหลดจึงเป็นไฟล์ที่สมบูรณ์และพร้อมเล่น
- HLS: จาก Apple ใช้เพลย์ลิสต์ .m3u8 ซึ่งรองรับโดย iOS/Safari รองรับทั้งแบบสดและแบบออนดีมานด์
- DASH: มาตรฐานแบบเปิดที่มีรายการ .mpd ซึ่งใช้ในวงกว้างโดย YouTube, Netflix และอื่นๆ
- ทั้งสองใช้ HTTP ธรรมดา เป็นมิตรกับ CDN และครองการสตรีมในปัจจุบัน