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

On this page
รู้จัก MPEG-DASH และ HLS
สองโปรโตคอลที่แบกงานสตรีมมิ่งแบบ adaptive ส่วนใหญ่บนเว็บคือ MPEG-DASH (Dynamic Adaptive Streaming over HTTP) และ HLS (HTTP Live Streaming) ทั้งคู่ส่งวิดีโอแบบแบ่งเซกเมนต์ผ่าน HTTP แต่ต่างกันที่รูปแบบเซกเมนต์ การรองรับ codec และการเข้าถึงแพลตฟอร์ม คู่มือนี้จะอธิบายว่าแต่ละตัวทำงานอย่างไร เปรียบเทียบกันด้านความหน่วงและประสิทธิภาพอย่างไร และจะเลือกใช้ตัวไหน — รวมถึง CMAF รวมทั้งสองเข้าเป็นชุดเซกเมนต์เดียวได้อย่างไร
ประวัติโดยย่อและจุดประสงค์
MPEG-DASH ถูกพัฒนาโดย Moving Picture Experts Group (MPEG) เพื่อสร้างรูปแบบสากลสำหรับการสตรีมเนื้อหาวิดีโอผ่านเว็บ มันออกแบบมาให้ไม่ผูกกับอุปกรณ์ (device-agnostic) เพื่อรับประกันความเข้ากันได้กับอุปกรณ์และแพลตฟอร์มที่หลากหลาย โปรโตคอลนี้ใช้ HTTP ในการส่งเซกเมนต์วิดีโอ มีความยืดหยุ่นสูง และรองรับทั้ง codec และรูปแบบคอนเทนเนอร์ที่หลากหลาย HLS ถูกพัฒนาโดย Apple และเปิดตัวครั้งแรกพร้อมกับอุปกรณ์ iOS มันกลายเป็นมาตรฐานสำหรับการสตรีมวิดีโอทั้งแบบสดและตามสั่ง (on-demand) อย่างรวดเร็ว HLS ใช้ HTTP ในการส่งเซกเมนต์วิดีโอ และถูกนำไปใช้อย่างแพร่หลายบนหลากหลายแพลตฟอร์มและอุปกรณ์ โดยเฉพาะบน iOS และ macOSรูปแบบเซกเมนต์ (Segment Formats)
หัวใจสำคัญของทั้ง DASH และ HLS คือวิธีจัดการเซกเมนต์วิดีโอ เซกเมนต์เหล่านี้คือส่วนย่อยของสตรีมวิดีโอที่ถูกส่งไปยังไคลเอนต์อย่างเป็นอิสระ ทำให้เกิดการสตรีมแบบ adaptive bitrate ได้
รูปแบบเซกเมนต์ของ DASH
โดยทั่วไปเซกเมนต์ของ DASH ถูกเข้ารหัสในรูปแบบ ISO Base Media File Format (ISOBMFF) ซึ่งใช้กับไฟล์ MP4 ด้วย รูปแบบนี้เปิดทางให้เข้าถึงแบบสุ่ม (random access) และสตรีมผ่าน HTTP ได้อย่างมีประสิทธิภาพ เซกเมนต์มักตั้งชื่อด้วยนามสกุล `.mp4` และจัดเรียงในโครงสร้างไดเรกทอรีที่มีไฟล์ MPD รวมอยู่ด้วย
รูปแบบเซกเมนต์ของ HLS
โดยทั่วไปเซกเมนต์ของ HLS ถูกเข้ารหัสในรูปแบบ `.ts` (MPEG-2 Transport Stream) แม้ว่า HLS เวอร์ชันใหม่กว่าจะรองรับเซกเมนต์ `.m4s` (Fragmented MP4) ด้วยก็ตาม เซกเมนต์เหล่านี้ถูกจัดกลุ่มไว้ในไฟล์เพลย์ลิสต์ (`.m3u8`) ซึ่งให้ข้อมูลแก่ไคลเอนต์เกี่ยวกับเซกเมนต์ที่มีและตำแหน่งของแต่ละเซกเมนต์
โครงสร้างของ Manifest
ไฟล์ manifest มีความสำคัญต่อทั้ง DASH และ HLS เพราะบรรจุ metadata เกี่ยวกับเนื้อหาวิดีโอและเซกเมนต์ที่มี
MPD (Media Presentation Description) สำหรับ DASH
ไฟล์ MPD ของ DASH เป็นเอกสาร XML ที่ให้ metadata เกี่ยวกับการนำเสนอวิดีโอ รวมถึงข้อมูลของสตรีมวิดีโอและเสียง URL ของเซกเมนต์ และข้อมูลจังหวะเวลา นี่คือตัวอย่างง่ายๆ ของไฟล์ MPD:
```xml
mediaPresentationDuration="PT0H1M24S"minBufferTime="PT1.5S"
profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"
type="static">
```
m3u8 สำหรับ HLS
ไฟล์ m3u8 ของ HLS เป็นไฟล์ข้อความที่ระบุรายการเซกเมนต์และ URL ของแต่ละเซกเมนต์ อีกทั้งยังสามารถรวม metadata เกี่ยวกับสตรีม เช่น codec และ bitrate ได้ด้วย นี่คือตัวอย่างง่ายๆ ของไฟล์ m3u8:
```plaintext
#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
```
การรองรับ Codec
ทั้ง DASH และ HLS รองรับ codec ได้หลากหลาย แต่ก็มีความแตกต่างกันในแง่ความเข้ากันได้และการรองรับ
Codec ที่ใช้ร่วมกัน
- H.264: รองรับอย่างกว้างขวางทั้งใน DASH และ HLS
- AAC: ใช้กันทั่วไปสำหรับเสียงในทั้งสองโปรโตคอล
- VP9: รองรับใน DASH แต่พบไม่บ่อยใน HLS
- HEVC (H.265): รองรับใน DASH แต่พบไม่บ่อยใน HLS โดยเฉพาะบนอุปกรณ์และแพลตฟอร์มรุ่นเก่า
ความเข้ากันได้ของ Codec
DASH ยืดหยุ่นกว่าในแง่การรองรับ codec เพราะรับมือกับ codec และรูปแบบคอนเทนเนอร์ได้หลากหลายกว่า ในอดีต HLS เข้มงวดกว่า โดยเฉพาะกับ codec และรูปแบบคอนเทนเนอร์ใหม่ๆ แม้ว่าสิ่งนี้จะดีขึ้นเมื่อมี HLSv4 และเซกเมนต์ Fragmented MP4 เข้ามา
Adaptive Bitrate (ABR)
การสตรีมแบบ adaptive bitrate เป็นฟีเจอร์หลักของทั้ง DASH และ HLS ที่ให้ไคลเอนต์สลับไปมาระหว่างระดับคุณภาพต่างๆ ตามสภาพเครือข่ายได้
ABR ใน DASH
ใน DASH ไคลเอนต์ใช้ไฟล์ MPD เพื่อระบุ bitrate ที่มีและ URL ของเซกเมนต์ จากนั้นไคลเอนต์สามารถสลับไปมาระหว่าง representation (bitrate) ต่างๆ ตามสภาพเครือข่าย ไฟล์ MPD กำหนด representation ต่างๆ ไว้ และไคลเอนต์สามารถเลือก representation ที่ดีที่สุดแบบไดนามิกตามแบนด์วิดท์ที่มี
ABR ใน HLS
ใน HLS ไคลเอนต์ใช้ไฟล์ m3u8 เพื่อระบุ bitrate ที่มีและ URL ของเซกเมนต์ ไคลเอนต์สามารถสลับไปมาระหว่างสตรีม (bitrate) ต่างๆ ตามสภาพเครือข่าย ไฟล์ m3u8 มีรายการสตรีมที่มีและ bitrate ของแต่ละสตรีม และไคลเอนต์สามารถเลือกสตรีมที่ดีที่สุดแบบไดนามิกตามแบนด์วิดท์ที่มี
ประสิทธิภาพและความคุ้มค่า
ทั้ง DASH และ HLS ออกแบบมาเพื่อให้การสตรีมมีประสิทธิภาพและความหน่วงต่ำ แต่ก็มีความแตกต่างกันในแง่ประสิทธิภาพ
ความหน่วง (Latency)
ความหน่วงแบบ end-to-end ขึ้นอยู่กับ ความยาวเซกเมนต์ การตั้งค่า encoder/packager และ ส่วนขยายความหน่วงต่ำ (เช่น LL-HLS หรือ chunked CMAF) เป็นหลัก ไม่ใช่แค่ชื่อย่อสามตัวอักษรของโปรโตคอล การใช้งาน HLS แบบดั้งเดิมมักใช้เซกเมนต์ 6–10 วินาที ซึ่งเพิ่มดีเลย์แบบ glass-to-glass ส่วน DASH มักถูก package ด้วยเซกเมนต์ที่สั้นกว่า แต่ก็ตั้งค่าได้ทั้งสองแบบ HLS แบบ fMP4 สมัยใหม่พร้อมการปรับจูนเพลเยอร์ที่ดี สามารถทำความหน่วงได้ใกล้เคียงกับ DASH เมื่อการตั้งค่าตรงกัน
การใช้แบนด์วิดท์
ทั้งสองโปรโตคอลใช้ adaptive bitrate ladder ความคุ้มค่ามาจาก การเลือก codec ขนาดเซกเมนต์ และ การแคชบน CDN ไม่ใช่จากป้ายชื่อ DASH หรือ HLS HLS แบบ MPEG-TS มีโอเวอร์เฮดของ mux มากกว่า fMP4 อยู่เล็กน้อย จึงควรเปรียบเทียบ manifest จริง แทนที่จะเหมาว่าโปรโตคอลใดโปรโตคอลหนึ่ง "มีประสิทธิภาพมากกว่า" เสมอ
การนำไปใช้และส่วนแบ่งตลาด
การนำ DASH และ HLS ไปใช้แตกต่างกันไปตามแพลตฟอร์มและอุปกรณ์ และแนวโน้มตลาดก็เปลี่ยนแปลงตลอดเวลา
แนวโน้มตลาดปัจจุบัน
DASH กำลังได้รับความนิยมมากขึ้นจากความยืดหยุ่นและการรองรับ codec ที่กว้าง ขณะที่ HLS ยังคงเป็นตัวเลือกยอดนิยม โดยเฉพาะบน iOS และ macOS แพลตฟอร์มและอุปกรณ์จำนวนมากรองรับทั้งสองโปรโตคอล และการเลือกมักขึ้นอยู่กับกรณีใช้งานและความต้องการเฉพาะ
อัตราการนำไปใช้
- DASH: ถูกนำไปใช้มากขึ้นโดยบริการและแพลตฟอร์มสตรีมมิ่งที่ต้องการการรองรับ codec ที่กว้างและความยืดหยุ่น
- HLS: ถูกนำไปใช้อย่างแพร่หลายโดย Apple และแพลตฟอร์มอื่นๆ โดยเฉพาะสำหรับการสตรีมสดและเนื้อหาแบบตามสั่ง
การนำ DASH หรือ HLS ไปใช้
การนำ DASH หรือ HLS ไปใช้ต้องพิจารณาข้อกำหนดทางเทคนิคและกรณีใช้งานเฉพาะอย่างรอบคอบ
ขั้นตอนปฏิบัติในการนำไปใช้
การนำ DASH ไปใช้
1. เตรียมเนื้อหาวิดีโอ: เข้ารหัสเนื้อหาวิดีโอเป็นหลาย bitrate
2. สร้างเซกเมนต์: ใช้เครื่องมืออย่าง FFmpeg สร้างเซกเมนต์ DASH
3. สร้างไฟล์ MPD: ใช้เครื่องมืออย่าง MP4Box สร้างไฟล์ MPD
4. โฮสต์เนื้อหา: อัปโหลดเซกเมนต์และไฟล์ MPD ขึ้นเว็บเซิร์ฟเวอร์
5. เสิร์ฟเนื้อหา: กำหนดค่าเซิร์ฟเวอร์ให้เสิร์ฟเนื้อหา DASH ผ่าน HTTP
การนำ HLS ไปใช้
1. เตรียมเนื้อหาวิดีโอ: เข้ารหัสเนื้อหาวิดีโอเป็นหลาย bitrate
2. สร้างเซกเมนต์: ใช้เครื่องมืออย่าง FFmpeg สร้างเซกเมนต์ HLS
3. สร้างไฟล์ m3u8: ใช้เครื่องมืออย่าง FFmpeg สร้างไฟล์ m3u8
4. โฮสต์เนื้อหา: อัปโหลดเซกเมนต์และไฟล์ m3u8 ขึ้นเว็บเซิร์ฟเวอร์
5. เสิร์ฟเนื้อหา: กำหนดค่าเซิร์ฟเวอร์ให้เสิร์ฟเนื้อหา HLS ผ่าน HTTP
ตารางเปรียบเทียบ
| คุณสมบัติ | DASH | HLS |
|---|
| การรองรับ Codec | ยืดหยุ่น รองรับ H.264, VP9, HEVC ฯลฯ | รองรับ H.264, AAC รองรับ codec ใหม่ๆ อย่างจำกัด |
|---|
| รูปแบบเซกเมนต์ | เซกเมนต์ MP4 (ISOBMFF) | MPEG-2 Transport Stream (`.ts`) หรือ Fragmented MP4 (`.m4s`) |
|---|
| Manifest | ไฟล์ MPD (XML) | ไฟล์ m3u8 (ข้อความ) |
|---|
| ความหน่วง | ขึ้นกับความยาวเซกเมนต์และ packaging ความหน่วงต่ำ ไม่ได้ถูกกำหนดด้วย MPD เพียงอย่างเดียว | ขึ้นกับความยาวเซกเมนต์และการตั้งค่า LL-HLS / fMP4 ไม่ได้ถูกกำหนดด้วย m3u8 เพียงอย่างเดียว |
|---|
| ความคุ้มค่าแบนด์วิดท์ | ขึ้นกับ codec ladder และคอนเทนเนอร์ มักเป็น fMP4 | TS เพิ่มโอเวอร์เฮด mux ส่วน fMP4 HLS พบได้ทั่วไปในสแตกใหม่ |
|---|
| การนำไปใช้ | ถูกนำไปใช้มากขึ้นโดยบริการสตรีมมิ่ง | ถูกนำไปใช้อย่างแพร่หลายโดย Apple และแพลตฟอร์มอื่นๆ |
|---|
คำถามที่พบบ่อย
ความแตกต่างหลักระหว่าง DASH และ HLS คืออะไร?
DASH และ HLS ต่างกันในหลายด้านสำคัญ:
- การรองรับ Codec: DASH รองรับ codec ได้หลากหลายกว่า รวมถึงตัวใหม่ๆ อย่าง VP9 และ HEVC
- รูปแบบเซกเมนต์: DASH ใช้เซกเมนต์ MP4 ขณะที่ HLS ใช้เซกเมนต์ MPEG-2 Transport Stream หรือ Fragmented MP4
- ความหน่วง: ปรับได้ด้วยความยาวเซกเมนต์และเพลเยอร์ ทั้งสองโปรโตคอลเป็นได้ทั้งความหน่วงต่ำหรือสูง
- ความคุ้มค่าแบนด์วิดท์: ขับเคลื่อนด้วย codec และ packaging ควรเปรียบเทียบ manifest ที่วัดจริง
รูปแบบเซกเมนต์ของ DASH และ HLS ต่างกันอย่างไร?
DASH ใช้เซกเมนต์ MP4 (ISOBMFF) ซึ่งมีประสิทธิภาพกว่าสำหรับการเข้าถึงแบบสุ่มและการสตรีมผ่าน HTTP ส่วน HLS ใช้เซกเมนต์ MPEG-2 Transport Stream (`.ts`) หรือ Fragmented MP4 (`.m4s`) ซึ่งอาจต้องการโอเวอร์เฮดมากกว่า
DASH และ HLS รองรับ codec ตัวใดมากที่สุด?
ทั้ง DASH และ HLS รองรับ H.264 สำหรับวิดีโอและ AAC สำหรับเสียงเป็นเรื่องปกติ อย่างไรก็ตาม DASH ยังรองรับ codec ใหม่ๆ อย่าง VP9 และ HEVC ด้วย ขณะที่ HLS รองรับตัวเหล่านี้อย่างจำกัด
Adaptive bitrate ใน DASH และ HLS ทำงานอย่างไร?
ABR ทำงานโดยให้ไคลเอนต์สลับไปมาระหว่างระดับคุณภาพต่างๆ ตามสภาพเครือข่าย DASH ใช้ไฟล์ MPD ขณะที่ HLS ใช้ไฟล์ m3u8 ในการจัดการ bitrate และ URL ของเซกเมนต์ต่างๆ
โปรโตคอลไหนมีความหน่วงต่ำกว่ากัน DASH หรือ HLS?
ไม่มีโปรโตคอลใดรับประกันความหน่วงต่ำได้ด้วยตัวเอง ให้ใช้ เซกเมนต์สั้น keyframe ที่จัดตำแหน่งตรงกัน และฟีเจอร์ low-latency HLS หรือ DASH ที่รองรับ จากนั้นวัดดีเลย์แบบ glass-to-glass บน encoder, CDN และเพลเยอร์ของคุณ
ประโยชน์หลักของการใช้ dcast.tv ในการนำ DASH และ HLS ไปใช้คืออะไร?
dcast.tv รองรับทั้ง DASH และ HLS มอบโซลูชันการสตรีมวิดีโอที่ยืดหยุ่นและมีประสิทธิภาพ ช่วยให้กระบวนการนำไปใช้ราบรื่นขึ้นและรับประกันความเข้ากันได้ข้ามหลายแพลตฟอร์ม
ฉันจะเลือกระหว่าง DASH กับ HLS สำหรับความต้องการสตรีมวิดีโอของฉันอย่างไร?
เลือก DASH หากคุณต้องการการรองรับ codec ที่กว้างและความหน่วงต่ำกว่า หรือเลือก HLS หากคุณต้องการการรองรับเฉพาะแพลตฟอร์ม (เช่น สำหรับอุปกรณ์ Apple) พิจารณาจากกรณีใช้งาน ข้อกำหนดของแพลตฟอร์ม และข้อจำกัดทางเทคนิคของคุณ
บทสรุป
DASH และ HLS ต่างเป็นโปรโตคอลสตรีมมิ่งที่ทำงานบนพื้นฐาน HTTP และมีความสมบูรณ์แล้วทั้งคู่ DASH ให้ความยืดหยุ่นด้าน codec ที่กว้างกว่า ขณะที่ HLS รองรับอุปกรณ์และระบบนิเวศของ Apple ได้กว้างที่สุด ส่วนความหน่วงและความคุ้มค่าแบนด์วิดท์ขึ้นอยู่กับการตั้งค่าเซกเมนต์และ packaging ของคุณ ไม่ใช่ชื่อโปรโตคอล เลือก HLS เพื่อการเข้าถึงสูงสุด เลือก DASH เพื่อความยืดหยุ่นด้าน codec และหันมาใช้ CMAF ร่วมกับส่วนขยายความหน่วงต่ำเมื่อดีเลย์แบบ glass-to-glass เป็นเรื่องสำคัญ
คำถามที่พบบ่อย
ความแตกต่างหลักระหว่าง DASH และ HLS คืออะไร?
DASH และ HLS ต่างกันในหลายด้านสำคัญ: - **การรองรับ Codec**: DASH รองรับ codec ได้หลากหลายกว่า รวมถึงตัวใหม่ๆ อย่าง VP9 และ HEVC - **รูปแบบเซกเมนต์**: DASH ใช้เซกเมนต์ MP4 ขณะที่ HLS ใช้ MPEG-2 Transport Stream หรือ Fragmented MP4 - **ความหน่วง**: ไม่มีโปรโตคอลใดความหน่วงต่ำกว่าโดยธรรมชาติ มันขึ้นกับความยาวเซกเมนต์และส่วนขยายความหน่วงต่ำอย่าง LL-HLS หรือ chunked CMAF - **ความคุ้มค่าแบนด์วิดท์**: ความคุ้มค่ามาจากการเลือก codec ขนาดเซกเมนต์ และการแคชบน CDN ไม่ใช่จากป้ายชื่อโปรโตคอล
รูปแบบเซกเมนต์ของ DASH และ HLS ต่างกันอย่างไร?
DASH ใช้เซกเมนต์ MP4 (ISOBMFF) ซึ่งมีประสิทธิภาพกว่าสำหรับการเข้าถึงแบบสุ่มและการสตรีมผ่าน HTTP ส่วน HLS ใช้เซกเมนต์ MPEG-2 Transport Stream (`.ts`) หรือ Fragmented MP4 (`.m4s`) ซึ่งอาจต้องการโอเวอร์เฮดมากกว่า
DASH และ HLS รองรับ codec ตัวใดมากที่สุด?
ทั้ง DASH และ HLS รองรับ H.264 สำหรับวิดีโอและ AAC สำหรับเสียงเป็นเรื่องปกติ อย่างไรก็ตาม DASH ยังรองรับ codec ใหม่ๆ อย่าง VP9 และ HEVC ด้วย ขณะที่ HLS รองรับตัวเหล่านี้อย่างจำกัด
Adaptive bitrate ใน DASH และ HLS ทำงานอย่างไร?
ABR ทำงานโดยให้ไคลเอนต์สลับไปมาระหว่างระดับคุณภาพต่างๆ ตามสภาพเครือข่าย DASH ใช้ไฟล์ MPD ขณะที่ HLS ใช้ไฟล์ m3u8 ในการจัดการ bitrate และ URL ของเซกเมนต์ต่างๆ
โปรโตคอลไหนมีความหน่วงต่ำกว่ากัน DASH หรือ HLS?
ไม่มีโปรโตคอลใดรับประกันความหน่วงต่ำได้ด้วยตัวเอง ความหน่วงขึ้นกับความยาวเซกเมนต์และส่วนขยายความหน่วงต่ำอย่าง LL-HLS หรือ chunked CMAF ให้ใช้เซกเมนต์สั้นที่จัดตำแหน่ง keyframe ตรงกัน แล้ววัดดีเลย์แบบ glass-to-glass บน encoder, CDN และเพลเยอร์ของคุณ
dcast Team
Professional video streaming experts helping creators succeed.
บทความที่เกี่ยวข้อง
เริ่มต้นธุรกิจวิดีโอของคุณวันนี้
เข้าร่วมกับครีเอเตอร์นับพันที่สร้างรายได้จากคอนเทนต์ด้วย DCAST
เริ่มต้นใช้งานฟรี


