DASH vs HLS: ศึกชิงบัลลังก์โปรโตคอลสตรีมมิ่ง
DASH vs HLS ศึกชิงบัลลังก์โปรโตคอลสตรีมมิ่ง เปรียบเทียบรูปแบบสตรีมมิ่งแบบปรับอัตราบิตได้และกรณีการใช้งานบน dcast.tv

On this page
แนะนำ MPEG-DASH และ HLS
โปรโตคอลสองตัวรองรับสตรีมมิ่งแบบปรับอัตราบิตได้ (adaptive streaming) บนเว็บเป็นส่วนใหญ่ ได้แก่ MPEG-DASH (Dynamic Adaptive Streaming over HTTP) และ HLS (HTTP Live Streaming) ทั้งสองส่งวิดีโอที่แบ่งเป็นเซกเมนต์ผ่าน HTTP แต่ต่างกันที่รูปแบบเซกเมนต์ การรองรับโคเดก และขอบเขตของแพลตฟอร์ม คู่มือนี้อธิบายหลักการทำงานของแต่ละตัว เปรียบเทียบด้านความหน่วงและประสิทธิภาพ และวิธีเลือกระหว่างสองตัวนี้ รวมถึงวิธีที่ CMAF รวมทั้งสองเป็นชุดเซกเมนต์เดียว
ประวัติโดยย่อและวัตถุประสงค์
MPEG-DASH พัฒนาโดย Moving Picture Experts Group (MPEG) เพื่อสร้างรูปแบบสากลสำหรับสตรีมวิดีโอผ่านเว็บ ออกแบบให้ไม่ผูกกับอุปกรณ์ใดเป็นพิเศษ จึงใช้งานร่วมกับอุปกรณ์และแพลตฟอร์มได้หลากหลาย โปรโตคอลนี้ใช้ HTTP ส่งเซกเมนต์วิดีโอ และมีความยืดหยุ่นสูง รองรับโคเดกและรูปแบบคอนเทนเนอร์ได้หลายแบบ
HLS พัฒนาโดย Apple และเปิดตัวครั้งแรกพร้อมอุปกรณ์ iOS จากนั้นก็กลายเป็นมาตรฐานสำหรับการสตรีมวิดีโอทั้งแบบสดและออนดีมานด์อย่างรวดเร็ว HLS ใช้ HTTP ส่งเซกเมนต์วิดีโอเช่นกัน และถูกนำไปใช้อย่างแพร่หลายบนแพลตฟอร์มและอุปกรณ์ต่าง ๆ โดยเฉพาะ iOS และ macOS
รูปแบบเซกเมนต์
ประเด็นสำคัญของทั้ง DASH และ HLS คือวิธีจัดการเซกเมนต์วิดีโอ เซกเมนต์คือส่วนย่อยของสตรีมวิดีโอที่ส่งไปยังไคลเอนต์แยกกัน ทำให้สตรีมแบบปรับอัตราบิตได้
รูปแบบเซกเมนต์ของ DASH
เซกเมนต์ DASH มักเข้ารหัสในรูปแบบ ISO Base Media File Format (ISOBMFF) ซึ่งใช้กับไฟล์ MP4 ด้วย รูปแบบนี้ช่วยให้เข้าถึงตำแหน่งใดก็ได้อย่างมีประสิทธิภาพและสตรีมผ่าน HTTP ได้ดี เซกเมนต์มักตั้งชื่อด้วยนามสกุล .mp4 และจัดเรียงในโครงสร้างไดเรกทอรีที่มีไฟล์ MPD
รูปแบบเซกเมนต์ของ HLS
เซกเมนต์ HLS มักเข้ารหัสในรูปแบบ .ts (MPEG-2 Transport Stream) แม้ HLS เวอร์ชันใหม่จะรองรับเซกเมนต์ .m4s (Fragmented MP4) ด้วย เซกเมนต์เหล่านี้ถูกรวมไว้ในไฟล์เพลย์ลิสต์ (.m3u8) ซึ่งบอกไคลเอนต์ว่ามีเซกเมนต์ใดบ้างและอยู่ที่ใด
โครงสร้างแมนิเฟสต์
ไฟล์แมนิเฟสต์สำคัญต่อทั้ง DASH และ HLS เพราะเก็บเมทาดาทาของเนื้อหาวิดีโอและเซกเมนต์ที่มีอยู่
MPD (Media Presentation Description) ของ DASH
ไฟล์ MPD ของ DASH เป็นเอกสาร XML ที่ให้เมทาดาทาของการนำเสนอวิดีโอ รวมถึงข้อมูลสตรีมวิดีโอและเสียง URL ของเซกเมนต์ และข้อมูลเวลา ต่อไปนี้คือตัวอย่างไฟล์ MPD แบบง่าย
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
mediaPresentationDuration="PT0H1M24S"
minBufferTime="PT1.5S"
profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"
type="static">
<Period start="PT0S">
<AdaptationSet>
<SegmentTemplate timescale="1000" media="segment-$Number$.mp4" initialization="segment-0.mp4" />
<Representation id="rep1" bandwidth="1000000" codecs="avc1.42c015" width="640" height="360">
<SegmentList>
<SegmentURL media="segment-1.mp4"/>
<SegmentURL media="segment-2.mp4"/>
<SegmentURL media="segment-3.mp4"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>
m3u8 ของ HLS
ไฟล์ m3u8 ของ HLS เป็นไฟล์ข้อความที่แสดงรายการเซกเมนต์และ URL ของแต่ละเซกเมนต์ อาจมีเมทาดาทาของสตรีมด้วย เช่น โคเดกและบิตเรต ต่อไปนี้คือตัวอย่างไฟล์ m3u8 แบบง่าย
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.000,
segment_00000.ts
#EXTINF:10.000,
segment_00001.ts
#EXTINF:10.000,
segment_00002.ts
#EXT-X-ENDLIST
การรองรับโคเดก
ทั้ง DASH และ HLS รองรับโคเดกได้หลากหลาย แต่มีความแตกต่างเรื่องความเข้ากันได้และการรองรับอยู่บ้าง
โคเดกที่ใช้กันทั่วไป
- H.264: ทั้ง DASH และ HLS รองรับอย่างกว้างขวาง
- AAC: ใช้กันทั่วไปสำหรับเสียงในทั้งสองโปรโตคอล
- VP9: DASH รองรับ แต่พบได้น้อยกว่าใน HLS
- HEVC (H.265): DASH รองรับ แต่พบได้น้อยกว่าใน HLS โดยเฉพาะบนอุปกรณ์และแพลตฟอร์มรุ่นเก่า
ความเข้ากันได้ของโคเดก
DASH ยืดหยุ่นกว่าในเรื่องการรองรับโคเดก เพราะรองรับโคเดกและรูปแบบคอนเทนเนอร์ได้หลากหลายกว่า ส่วน HLS ในอดีตเข้มงวดกว่า โดยเฉพาะกับโคเดกและรูปแบบคอนเทนเนอร์ใหม่ ๆ แม้สถานการณ์จะดีขึ้นเมื่อมี HLSv4 และเซกเมนต์ Fragmented MP4
Adaptive Bitrate (ABR)
การสตรีมแบบปรับอัตราบิตได้เป็นฟีเจอร์หลักของทั้ง DASH และ HLS ช่วยให้ไคลเอนต์สลับระหว่างระดับคุณภาพต่าง ๆ ตามสภาพเครือข่าย
ABR ใน DASH
ใน DASH ไคลเอนต์ใช้ไฟล์ MPD เพื่อดูบิตเรตที่มีและ URL ของเซกเมนต์ จากนั้นสลับระหว่างตัวแทน (representation) หรือบิตเรตต่าง ๆ ตามสภาพเครือข่าย ไฟล์ MPD กำหนด representation ต่าง ๆ และไคลเอนต์เลือก representation ที่ดีที่สุดได้แบบไดนามิกตามแบนด์วิดท์ที่มี
ABR ใน HLS
ใน HLS ไคลเอนต์ใช้ไฟล์ m3u8 เพื่อดูบิตเรตที่มีและ URL ของเซกเมนต์ ไคลเอนต์สลับระหว่างสตรีม (บิตเรต) ต่าง ๆ ตามสภาพเครือข่าย ไฟล์ m3u8 มีรายการสตรีมที่ใช้ได้พร้อมบิตเรต และไคลเอนต์เลือกสตรีมที่ดีที่สุดได้แบบไดนามิกตามแบนด์วิดท์ที่มี
ประสิทธิภาพและความคุ้มค่า
ทั้ง DASH และ HLS ออกแบบมาเพื่อสตรีมอย่างมีประสิทธิภาพและความหน่วงต่ำ แต่มีความแตกต่างด้านประสิทธิภาพบางประการ
ความหน่วง
ความหน่วงแบบต้นทางถึงปลายทางขึ้นอยู่กับความยาวเซกเมนต์ การตั้งค่าตัวเข้ารหัสและแพ็กเกอร์ และส่วนขยายความหน่วงต่ำ (เช่น LL-HLS หรือ chunked CMAF) เป็นหลัก ไม่ใช่ชื่อย่อสามตัวอักษรเพียงอย่างเดียว การใช้งาน HLS แบบดั้งเดิมมักใช้เซกเมนต์ 6–10 วินาที ซึ่งเพิ่มความหน่วงตั้งแต่กล้องถึงจอผู้ชม (glass-to-glass) ส่วน DASH มักแพ็กเกจด้วยเซกเมนต์สั้นกว่า แต่ตั้งค่าได้ทั้งสองแบบ HLS แบบ fMP4 สมัยใหม่และการปรับแต่งเพลเยอร์ที่เหมาะสมทำให้ได้ความหน่วงใกล้เคียงกับ DASH เมื่อการตั้งค่าตรงกัน
การใช้แบนด์วิดท์
ทั้งสองโปรโตคอลใช้ชุดบิตเรตแบบปรับได้ (adaptive bitrate ladder) ประสิทธิภาพมาจากการเลือกโคเดก ขนาดเซกเมนต์ และการแคชของ CDN ไม่ใช่จากป้าย DASH หรือ HLS HLS แบบ MPEG-TS มีโอเวอร์เฮดของการมัลติเพล็กซ์มากกว่า fMP4 เล็กน้อย ควรเปรียบเทียบแมนิเฟสต์จริงแทนที่จะสรุปว่าโปรโตคอลใดโปรโตคอลหนึ่ง "มีประสิทธิภาพกว่า" เสมอ
การยอมรับและสถานะในตลาด
การยอมรับ DASH และ HLS แตกต่างกันไปตามแพลตฟอร์มและอุปกรณ์ และแนวโน้มตลาดเปลี่ยนแปลงอยู่ตลอด
แนวโน้มตลาดปัจจุบัน
DASH กำลังได้รับความนิยมเพิ่มขึ้นเพราะความยืดหยุ่นและการรองรับโคเดกที่กว้าง ขณะที่ HLS ยังเป็นตัวเลือกยอดนิยม โดยเฉพาะบน iOS และ macOS แพลตฟอร์มและอุปกรณ์จำนวนมากรองรับทั้งสองโปรโตคอล และการเลือกมักขึ้นอยู่กับกรณีการใช้งานและความต้องการเฉพาะ
อัตราการยอมรับ
- DASH: ได้รับการยอมรับเพิ่มขึ้นในบริการสตรีมมิ่งและแพลตฟอร์มที่ต้องการการรองรับโคเดกที่กว้างและความยืดหยุ่น
- HLS: Apple และแพลตฟอร์มอื่น ๆ นำไปใช้อย่างแพร่หลาย โดยเฉพาะสำหรับไลฟ์สตรีมมิ่งและคอนเทนต์ออนดีมานด์
การนำ DASH และ HLS ไปใช้งาน
การนำ DASH หรือ HLS ไปใช้ต้องพิจารณาข้อกำหนดทางเทคนิคและกรณีการใช้งานเฉพาะอย่างรอบคอบ
ขั้นตอนปฏิบัติสำหรับการนำไปใช้
การนำ DASH ไปใช้
- เตรียมคอนเทนต์วิดีโอ: เข้ารหัสคอนเทนต์วิดีโอเป็นหลายบิตเรต
- สร้างเซกเมนต์: ใช้เครื่องมืออย่าง FFmpeg เพื่อสร้างเซกเมนต์ DASH
- สร้างไฟล์ MPD: ใช้เครื่องมืออย่าง MP4Box เพื่อสร้างไฟล์ MPD
- โฮสต์คอนเทนต์: อัปโหลดเซกเมนต์และไฟล์ MPD ไปยังเว็บเซิร์ฟเวอร์
- ให้บริการคอนเทนต์: ตั้งค่าเซิร์ฟเวอร์ให้ส่งคอนเทนต์ DASH ผ่าน HTTP
การนำ HLS ไปใช้
- เตรียมคอนเทนต์วิดีโอ: เข้ารหัสคอนเทนต์วิดีโอเป็นหลายบิตเรต
- สร้างเซกเมนต์: ใช้เครื่องมืออย่าง FFmpeg เพื่อสร้างเซกเมนต์ HLS
- สร้างไฟล์ m3u8: ใช้เครื่องมืออย่าง FFmpeg เพื่อสร้างไฟล์ m3u8
- โฮสต์คอนเทนต์: อัปโหลดเซกเมนต์และไฟล์ m3u8 ไปยังเว็บเซิร์ฟเวอร์
- ให้บริการคอนเทนต์: ตั้งค่าเซิร์ฟเวอร์ให้ส่งคอนเทนต์ HLS ผ่าน HTTP
ตารางเปรียบเทียบ
| ฟีเจอร์ | DASH | HLS |
|---|---|---|
| การรองรับโคเดก | ยืดหยุ่น รองรับ H.264, VP9, HEVC ฯลฯ | รองรับ H.264, AAC และรองรับโคเดกใหม่อย่างจำกัด |
| รูปแบบเซกเมนต์ | เซกเมนต์ MP4 (ISOBMFF) | MPEG-2 Transport Stream (.ts) หรือ Fragmented MP4 (.m4s) |
| แมนิเฟสต์ | ไฟล์ MPD (XML) | ไฟล์ m3u8 (ข้อความ) |
| ความหน่วง | ขึ้นกับความยาวเซกเมนต์และการแพ็กเกจความหน่วงต่ำ ไม่ได้ถูกกำหนดโดย MPD เพียงอย่างเดียว | ขึ้นกับความยาวเซกเมนต์และการตั้งค่า LL-HLS / fMP4 ไม่ได้ถูกกำหนดโดย m3u8 เพียงอย่างเดียว |
| ประสิทธิภาพแบนด์วิดท์ | ขึ้นกับโคเดก บิตเรตแลดเดอร์ และคอนเทนเนอร์ มักเป็น fMP4 | TS เพิ่มโอเวอร์เฮดการมัลติเพล็กซ์ ส่วน fMP4 HLS พบได้ทั่วไปในระบบใหม่ |
| การยอมรับ | ได้รับการยอมรับเพิ่มขึ้นในบริการสตรีมมิ่ง | Apple และแพลตฟอร์มอื่น ๆ นำไปใช้อย่างแพร่หลาย |
บทสรุป
DASH และ HLS เป็นโปรโตคอลสตรีมมิ่งบน HTTP ที่เติบโตเต็มที่ทั้งคู่ DASH ให้ความยืดหยุ่นด้านโคเดกมากกว่า ขณะที่ HLS รองรับอุปกรณ์และระบบนิเวศของ Apple ได้กว้างที่สุด ส่วนความหน่วงและประสิทธิภาพแบนด์วิดท์ขึ้นอยู่กับการตั้งค่าเซกเมนต์และการแพ็กเกจของคุณ ไม่ใช่ชื่อโปรโตคอล เลือก HLS เพื่อการเข้าถึงสูงสุด เลือก DASH เพื่อความยืดหยุ่นด้านโคเดก และใช้ CMAF ร่วมกับส่วนขยายความหน่วงต่ำเมื่อความหน่วงตั้งแต่กล้องถึงจอผู้ชมเป็นเรื่องสำคัญ
คำถามที่พบบ่อย
DASH กับ HLS แตกต่างกันหลัก ๆ อย่างไร
DASH และ HLS แตกต่างกันในหลายประเด็นสำคัญ - **การรองรับโคเดก**: DASH รองรับโคเดกได้หลากหลายกว่า รวมถึงโคเดกใหม่อย่าง VP9 และ HEVC - **รูปแบบเซกเมนต์**: DASH ใช้เซกเมนต์ MP4 ส่วน HLS ใช้เซกเมนต์ MPEG-2 Transport Stream หรือ Fragmented MP4 - **ความหน่วง**: ไม่มีโปรโตคอลใดหน่วงต่ำกว่าโดยธรรมชาติ ขึ้นกับความยาวเซกเมนต์และส่วนขยายความหน่วงต่ำ เช่น LL-HLS หรือ chunked CMAF - **ประสิทธิภาพแบนด์วิดท์**: ประสิทธิภาพมาจากการเลือกโคเดก ขนาดเซกเมนต์ และการแคชของ CDN ไม่ใช่จากชื่อโปรโตคอล
รูปแบบเซกเมนต์ของ DASH กับ HLS ต่างกันอย่างไร
DASH ใช้เซกเมนต์ MP4 (ISOBMFF) ซึ่งมีประสิทธิภาพมากกว่าสำหรับการเข้าถึงตำแหน่งใดก็ได้และการสตรีมผ่าน HTTP ส่วน HLS ใช้เซกเมนต์ MPEG-2 Transport Stream (`.ts`) หรือ Fragmented MP4 (`.m4s`) ซึ่งอาจมีโอเวอร์เฮดมากกว่า
DASH และ HLS รองรับโคเดกใดเป็นส่วนใหญ่
ทั้ง DASH และ HLS รองรับ H.264 สำหรับวิดีโอและ AAC สำหรับเสียงเป็นปกติ อย่างไรก็ตาม DASH รองรับโคเดกใหม่อย่าง VP9 และ HEVC ด้วย ขณะที่ HLS รองรับโคเดกเหล่านี้อย่างจำกัด
Adaptive bitrate ทำงานอย่างไรใน DASH และ HLS
ABR ทำงานโดยให้ไคลเอนต์สลับระหว่างระดับคุณภาพต่าง ๆ ตามสภาพเครือข่าย DASH ใช้ไฟล์ MPD ส่วน HLS ใช้ไฟล์ m3u8 เพื่อจัดการบิตเรตและ URL ของเซกเมนต์ต่าง ๆ
โปรโตคอลใดมีความหน่วงต่ำกว่า DASH หรือ HLS
ไม่มีโปรโตคอลใดรับประกันความหน่วงต่ำได้ด้วยตัวเอง ความหน่วงขึ้นกับความยาวเซกเมนต์และส่วนขยายความหน่วงต่ำ เช่น LL-HLS หรือ chunked CMAF ให้ใช้เซกเมนต์สั้นที่คีย์เฟรมจัดแนวตรงกัน และวัดความหน่วงตั้งแต่กล้องถึงจอผู้ชมตลอดทั้งตัวเข้ารหัส CDN และเพลเยอร์ของคุณ
ประโยชน์หลักของการใช้ dcast.tv สำหรับการนำ DASH และ HLS ไปใช้คืออะไร
dcast.tv ส่งมอบทุกวิดีโอและไลฟ์สตรีมให้ผู้ชมผ่าน HLS พร้อมชุดบิตเรตแบบปรับได้ จึงเล่นได้ในเบราว์เซอร์สมัยใหม่และบนอุปกรณ์ Apple โดยไม่ต้องใช้ปลั๊กอิน DASH รองรับในฝั่งอินพุต กล่าวคือสตรีมที่มีอยู่แล้วเป็นแหล่งข้อมูล MPEG-DASH (.mpd) สามารถดึงเข้า dcast.tv ผ่าน HTTP ได้ แล้วผู้ชมจะรับชมผ่าน HLS
จะเลือกระหว่าง DASH กับ HLS สำหรับความต้องการสตรีมวิดีโอของฉันอย่างไร
เลือก DASH หากต้องการการรองรับโคเดกที่กว้างและความหน่วงที่ต่ำกว่า หรือเลือก HLS หากต้องการการรองรับเฉพาะแพลตฟอร์ม (เช่น อุปกรณ์ Apple) ให้พิจารณากรณีการใช้งานเฉพาะ ข้อกำหนดของแพลตฟอร์ม และข้อจำกัดทางเทคนิคของคุณ
เครื่องมือฟรีสำหรับหัวข้อนี้
- Stream Labเครื่องมือเดียวสำหรับ HLS: วิเคราะห์ manifest ตาราง variant เพลเยอร์แบบฝัง และเทเลเมทรีการเล่นแบบสด — buffer, latency, โคเดก และบิตเรต
- เพลเยอร์ HLS / M3U8ตรวจสอบสตรีม HLS ของคุณก่อนไลฟ์ วาง URL .m3u8 หรือเลือกตัวอย่าง รองรับ HLS ที่ใช้เซกเมนต์ TS และ fMP4 ใช้งานได้ทั้งเดสก์ท็อปและมือถือ เราไม่ proxy หรือจัดเก็บสตรีมของคุณ
- ตัวตรวจสอบ DASH / MPDดึง URL .mpd ที่เป็นสาธารณะจากเบราว์เซอร์ของคุณ แล้วอ่านโครงสร้างอย่างรวดเร็ว: ประเภท MPD, adaptation set, representation และตัวอย่างส่วนหนึ่งของเอกสาร เสริมกับเครื่องมือ HLS โดยใช้กฎ CORS เดียวกัน
- ทำไมเล่นไม่ได้?ทำตามเช็กลิสต์นี้เมื่อลิงก์สตรีมหรือวิดีโอของคุณเล่นไม่ได้ จากนั้นทดสอบ URL ด้านล่างหรือใน Stream Checker
dcast Team
ผู้เชี่ยวชาญด้านการสตรีมวิดีโอที่ช่วยให้ครีเอเตอร์ประสบความสำเร็จ
บทความที่เกี่ยวข้อง
เริ่มต้นธุรกิจวิดีโอของคุณวันนี้
อัปโหลด สตรีม และขายวิดีโอของคุณ เริ่มต้นด้วยแพ็กเกจฟรี ไม่ต้องใช้บัตร
เริ่มต้นใช้งานฟรี


