ข้ามไปยังเนื้อหา

Codec วิดีโอ H.264 H.265 AV1 ต่างกันอย่างไร ทำไมบางไฟล์เล่นไม่ได้

ภาพประกอบม้วนฟิล์มที่ถูกบีบอัดเป็นไฟล์เล็กลงสามระดับ แทนโคเดก H.264 H.265 และ AV1 เล่นบนทีวีและโทรศัพท์

ไฟล์วิดีโอที่ไม่บีบอัดมีขนาดใหญ่มาก MDN (เอกสารด้านเว็บของ Mozilla) ยกตัวอย่างว่า ภาพ 1 เฟรมความละเอียด Full HD (1920×1080) แบบสี 4 ไบต์ต่อพิกเซล มีขนาด 8,294,400 ไบต์ ที่ 30 เฟรมต่อวินาที วิดีโอ 1 วินาทีจะกินพื้นที่ราว 249 MB วิดีโอ 1 นาทีราว 14.93 GB และหนังยาว 2 ชั่วโมงราว 1.79 TB ถ้าจะส่งผ่านเครือข่ายก็ต้องใช้แบนด์วิดท์ราว 249 MB ต่อวินาที โดยยังไม่นับเสียง

codec ย่อมาจาก coder-decoder คือโปรแกรมหรือวงจรที่บีบอัดข้อมูลตอนบันทึกหรือส่งออก (encode) และคลายออกมาเล่น (decode) MDN ระบุว่า codec วิดีโอส่วนใหญ่เป็นแบบสูญเสีย (lossy) คือภาพที่คลายออกมาไม่เหมือนต้นฉบับทุกจุด ยิ่งบีบมาก รายละเอียดที่เสียไปโดยทั่วไปก็ยิ่งมาก การออกแบบ codec จึงเป็นการหาจุดสมดุลระหว่างขนาดไฟล์กับคุณภาพ

สาเหตุที่คนสับสนมากที่สุดคือเข้าใจว่า .mp4 หรือ .mkv คือรูปแบบวิดีโอ ความจริงคือไฟล์วิดีโอหนึ่งไฟล์ประกอบด้วยสองชั้น

  • container (ไฟล์ชนิดกล่อง) เช่น MP4, WebM, MKV คือรูปแบบไฟล์ที่ห่อสตรีมเสียงและภาพไว้ด้วยกันพร้อมข้อมูลประกอบ
  • codec คือวิธีบีบอัดของสตรีมภาพ และของสตรีมเสียงแยกกัน เช่น ภาพใช้ H.264 เสียงใช้ AAC

MDN อธิบายว่ารูปแบบของไฟล์เสียงและวิดีโอถูกกำหนดจากหลายส่วนรวมกัน ได้แก่ codec ของเสียง/ภาพ ชนิด container และข้อมูลอื่น เช่น ซับไตเติล นอกจากนี้เอกสารยังระบุว่าตารางการรองรับของเบราว์เซอร์หมายถึง “ตัวกล่อง” เท่านั้น ไม่ได้รับประกันว่ารองรับ codec ทุกชนิดที่ใส่ไว้ข้างใน

โครงสร้างไฟล์วิดีโอ container ห่อสตรีมภาพที่ใช้ codec วิดีโอ และสตรีมเสียงที่ใช้ codec เสียง

ผลคือไฟล์ .mp4 สองไฟล์ที่ชื่อต่อท้ายเหมือนกัน อาจใช้ codec ข้างในต่างกัน ไฟล์หนึ่งเล่นได้ในทีวี อีกไฟล์เล่นไม่ได้ ทั้งที่นามสกุลเดียวกัน

H.264 หรือ AVC (Advanced Video Coding) กำหนดไว้ในข้อกำหนด ITU H.264 และ MPEG-4 Part 10 ซึ่งมีเนื้อหาตรงกัน ตามข้อมูลของ MDN ใช้กันแพร่หลาย ทั้งการออกอากาศโทรทัศน์ การประชุมทางวิดีโอ และเป็น codec วิดีโอของแผ่น Blu-ray

จุดเด่นที่ MDN ระบุไว้

  • มีหลายโปรไฟล์ให้เลือกตามการใช้งาน เช่น Constrained Baseline สำหรับประชุมวิดีโอและมือถือ ใช้แบนด์วิดท์น้อยกว่า Main ซึ่งใช้กับโทรทัศน์ดิจิทัลความละเอียดมาตรฐานในบางภูมิภาค และ High Profile ซึ่งใช้กับแผ่น Blu-ray โปรไฟล์ส่วนใหญ่ใช้สี 8 บิต ส่วน High 10 รองรับสี 10 บิต
  • รองรับขนาดภาพสูงสุด 8,192×4,320 พิกเซล และอัตราเฟรมถึง 300 เฟรมต่อวินาทีในทางทฤษฎี
  • หลายแพลตฟอร์มมีฮาร์ดแวร์เข้ารหัสและถอดรหัส H.264
  • ใช้ใน WebRTC เป็นส่วนบังคับสำหรับการใช้งานนอกเบราว์เซอร์ และเว็บเบราว์เซอร์บางตัวรองรับด้วย

เรื่องสิทธิบัตร H.264 เป็นรูปแบบกรรมสิทธิ์ (proprietary) ที่มีสิทธิบัตรหลายรายการจากหลายเจ้าของ MDN ระบุว่าการใช้เชิงพาณิชย์ต้องขอใบอนุญาต แต่ Via LA ไม่เรียกเก็บค่าอนุญาตสำหรับการสตรีมวิดีโอทางอินเทอร์เน็ตที่ผู้ชมไม่ต้องจ่ายเงินดู

H.265 หรือ HEVC (High Efficiency Video Coding) กำหนดโดย ITU เช่นกัน และเป็น MPEG-H Part 2 ออกแบบมาเพื่อรองรับวิดีโอความละเอียดสูงมาก รวมถึง 8K และโครงสร้างที่ให้ซอฟต์แวร์ใช้ประโยชน์จากซีพียูหลายคอร์ MDN ระบุว่าในทางทฤษฎี HEVC ให้ไฟล์เล็กลงได้ครึ่งหนึ่งของ AVC ที่คุณภาพภาพเทียบเท่ากัน

  • รองรับขนาดภาพ 128×96 ถึง 8,192×4,320 พิกเซล ขึ้นกับโปรไฟล์และเลเวล
  • รองรับ HDR และอัตราเฟรมแปรผัน (VFR)
  • โปรไฟล์ Main รองรับเฉพาะสี 8 บิต ส่วน Main 10 รองรับสี 8 ถึง 10 บิต

ด้านสิทธิบัตร MDN ระบุว่า HEVC เป็นรูปแบบกรรมสิทธิ์ที่มีสิทธิบัตรหลายรายการ การออกใบอนุญาตจัดการโดย Via LA โดยคิดค่าธรรมเนียมจากผู้พัฒนาซอฟต์แวร์ ไม่ใช่จากผู้ผลิตหรือผู้เผยแพร่เนื้อหา MDN เตือนด้วยว่าอาจมีกลุ่มผู้ถือสิทธิบัตรมากกว่าหนึ่งกลุ่ม

การรองรับ H.265 จึงต่างกันมากในแต่ละเบราว์เซอร์และระบบปฏิบัติการ MDN สรุปการรองรับในเบราว์เซอร์ไว้ว่า

  • Chrome รองรับ HEVC บนเครื่องที่มีฮาร์ดแวร์ถอดรหัส สำหรับ Windows 8 ขึ้นไป, Linux และ ChromeOS ส่วน macOS Big Sur 11 ขึ้นไป และ Android 5.0 ขึ้นไปรองรับทุกเครื่อง
  • Edge บน Windows 10 เวอร์ชัน 1709 ขึ้นไป รองรับเมื่อเครื่องมีฮาร์ดแวร์ถอดรหัสและติดตั้ง “HEVC Video Extensions” จาก Microsoft Store
  • Firefox ตั้งแต่เวอร์ชัน 134 บน Windows ใช้ได้ทั้งแบบฮาร์ดแวร์และซอฟต์แวร์ แต่แบบซอฟต์แวร์ต้องติดตั้งส่วนขยายที่ต้องชำระเงิน รุ่นหลังจากนั้นรองรับ macOS และ Linux ส่วน Android ใช้ฮาร์ดแวร์เท่านั้น
  • Safari รองรับ HEVC บน macOS High Sierra ขึ้นไป

ข้อมูลข้างต้นเป็นของเบราว์เซอร์ ณ เวลาที่ MDN บันทึก โปรแกรมเล่นวิดีโอ ทีวี และกล่องสตรีมมิ่งมีรายการรองรับของตัวเอง ซึ่งต้องตรวจจากคู่มือหรือสเปกของอุปกรณ์นั้น

AV1 (AOMedia Video 1) พัฒนาโดย Alliance for Open Media (AOMedia) เป็น codec เปิดที่ออกแบบสำหรับวิดีโอบนอินเทอร์เน็ตโดยเฉพาะ AOMedia อธิบายว่า AV1 ให้การบีบอัดที่มีประสิทธิภาพกว่า codec รุ่นก่อน ลดต้นทุนการสตรีมและการเก็บข้อมูลโดยได้ไฟล์เล็กลง และมีการใช้งานบนแพลตฟอร์มและอุปกรณ์ที่หลากหลาย

MDN สรุปว่า AV1 บีบอัดได้ดีกว่า VP9 และ H.265/HEVC และดีกว่า AVC ได้ถึง 50% และเป็นรูปแบบที่ปลอดค่าสิทธิโดยสมบูรณ์ (fully royalty-free) ใช้ได้ทั้งกับแท็ก <video> และ WebRTC มีโปรไฟล์ main, high และ professional ที่รองรับความลึกสีและ chroma subsampling เพิ่มขึ้นตามลำดับ

เรื่องการรองรับ MDN ระบุว่า AV1 ใช้ได้ในเบราว์เซอร์หลักทุกตัว แต่ใน Safari จำกัดเฉพาะอุปกรณ์ที่มีฮาร์ดแวร์ถอดรหัส AV1 เช่น MacBook รุ่น M3 ขึ้นไป, iPhone 15 Pro และ iPhone 16 ขึ้นไป ดังนั้น Safari บนอุปกรณ์รุ่นเก่าที่ไม่มีฮาร์ดแวร์ดังกล่าวจึงเล่นไฟล์ AV1 ไม่ได้ ส่วนเบราว์เซอร์และโปรแกรมอื่นมีเงื่อนไขของตัวเอง MDN ชี้ว่าอุปกรณ์มือถือและเดสก์ท็อปจำนวนมากมีฮาร์ดแวร์ถอดรหัส AV1 แล้ว

หัวข้อ H.264 (AVC) H.265 (HEVC) AV1
ผู้กำหนด ITU / MPEG ITU / MPEG Alliance for Open Media
ขนาดไฟล์ที่คุณภาพใกล้กัน ใช้เป็นฐานเปรียบเทียบ ทฤษฎีเล็กกว่า AVC ราวครึ่งหนึ่ง (MDN) อัตราการบีบอัดสูงกว่า H.265 และสูงกว่า AVC ถึง 50% (MDN)
สิทธิบัตรและค่าสิทธิ กรรมสิทธิ์ มีสิทธิบัตร กรรมสิทธิ์ มีสิทธิบัตร เปิด ปลอดค่าสิทธิ
ขนาดภาพสูงสุด 8,192×4,320 8,192×4,320 สูงสุด 65,535×65,535 ตามรูปแบบ (แต่ละเลเวลจำกัดต่ำกว่านี้)
การรองรับ กว้างมาก ทุกเบราว์เซอร์หลัก ขึ้นกับฮาร์ดแวร์และระบบปฏิบัติการ เบราว์เซอร์หลักรองรับ แต่ Safari ต้องมีฮาร์ดแวร์

ค่า “เล็กลงกี่เปอร์เซ็นต์” เป็นตัวเลขกว้าง ๆ จริง ๆ แล้วผลขึ้นกับเนื้อหาวิดีโอ ตัวเข้ารหัส (encoder) และการตั้งค่า MDN เองก็ใช้คำว่า “ในทางทฤษฎี” กับ HEVC ตัวเลขของ H.265 และ AV1 ในตารางวัดคนละแบบ จึงนำมาเทียบกันตรง ๆ ไม่ได้

เมื่อเจอไฟล์ที่เล่นไม่ได้ ปัญหามักอยู่ที่ข้อใดข้อหนึ่งต่อไปนี้

  1. เครื่องหรือโปรแกรมไม่มีตัวถอดรหัสของ codec นั้น เช่น เปิดไฟล์ H.265 ในเบราว์เซอร์ที่ยังไม่ได้ติดตั้งส่วนขยาย หรือเปิดไฟล์ AV1 ใน Safari บนอุปกรณ์รุ่นเก่า
  2. ไม่มีฮาร์ดแวร์ถอดรหัส เบราว์เซอร์บางตัวรองรับ HEVC เฉพาะเครื่องที่มีฮาร์ดแวร์ และ Safari รองรับ AV1 เฉพาะอุปกรณ์ที่มีฮาร์ดแวร์
  3. container ที่ไม่รองรับ โปรแกรมอาจเล่น MP4 ได้ แต่เล่น MKV ไม่ได้ ทั้งที่ codec ข้างในเป็นตัวเดียวกัน
  4. โปรไฟล์หรือความลึกสีที่เกินความสามารถ ตัวอย่างจากตารางของ MDN คือ H.264 ส่วนใหญ่ใช้สี 8 บิต ถ้าไฟล์ใช้สี 10 บิต ตัวถอดรหัสของอุปกรณ์ต้องรองรับโปรไฟล์เช่น High 10 ด้วย
  5. codec เสียงที่ไม่รองรับ ภาพเล่นได้แต่เสียงเงียบ หรือไฟล์ทั้งไฟล์ไม่เล่น เพราะสตรีมเสียงใช้ codec ที่อุปกรณ์ไม่รู้จัก
  6. ไฟล์เสียหาย ดาวน์โหลดไม่สมบูรณ์ หรือบันทึกค้างกลางคัน

ลำดับตรวจสอบเมื่อไฟล์วิดีโอเล่นไม่ได้ ตั้งแต่ container, codec วิดีโอ, ฮาร์ดแวร์ถอดรหัส ไปจนถึง codec เสียง

ตรวจได้ด้วยโปรแกรมแสดงข้อมูลสื่อ เช่น MediaInfo หรือใช้ ffprobe ที่มาพร้อมชุดเครื่องมือ FFmpeg ด้วยคำสั่ง

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,pix_fmt -of default=nw=1 video.mp4

คำสั่งนี้แสดงชื่อ codec (เช่น h264, hevc, av1) โปรไฟล์ และรูปแบบพิกเซลของสตรีมภาพ นำชื่อเหล่านี้ไปเทียบกับสเปกของทีวี เครื่องเล่น หรือเบราว์เซอร์ที่ใช้ว่ารองรับหรือไม่

ถ้าอุปกรณ์เล่นไม่ได้ ทางออกที่พบบ่อยคือแปลงไฟล์ (transcode) เป็น codec ที่เครื่องรองรับ เช่น แปลง H.265 เป็น H.264 ข้อควรรู้มีสามข้อ

  • การแปลงต้องถอดรหัสแล้วเข้ารหัสใหม่ เมื่อ codec ต้นทางเป็นแบบสูญเสียและปลายทางก็เป็นแบบสูญเสีย โดยหลักการแล้วรายละเอียดจะเสียเพิ่ม จึงควรเก็บไฟล์ต้นฉบับไว้
  • ถ้าตั้งให้บีบอัดแรงเพื่อให้ไฟล์เล็ก คุณภาพจะลดลงตามหลักที่ MDN อธิบาย ยิ่งบีบมากยิ่งสูญเสียรายละเอียดมาก
  • การเปลี่ยนจาก codec ที่ประสิทธิภาพสูงกว่าเป็นรุ่นเก่ากว่า ไฟล์ที่ได้มักใหญ่ขึ้นหากต้องการคุณภาพใกล้เดิม เพราะรุ่นเก่ากว่าต้องใช้ข้อมูลมากกว่า

ใครเก็บคลังวิดีโอครอบครัวไว้ที่บ้าน ควรวางแผนพื้นที่เก็บข้อมูลก่อน เพราะ codec ที่ต่างกันทำให้ขนาดไฟล์ต่อชั่วโมงต่างกัน ลองดูบทความเปรียบเทียบ NAS กับ Cloud และใช้เครื่องคำนวณพื้นที่เก็บข้อมูลและสำรองประกอบการวางแผน

หลักคิดที่ใช้ได้ทั่วไป

  • ต้องการให้เล่นได้กว้างที่สุด สำหรับวิดีโอบนเว็บ MDN แนะนำคู่ MP4 + AVC (H.264) + AAC ว่าเป็นชุดที่รองรับกว้างที่สุด เบราว์เซอร์หลักทุกตัวรองรับ และคุณภาพดีพอสำหรับงานส่วนใหญ่
  • ต้องการไฟล์เล็กลงและอุปกรณ์รุ่นใหม่ MDN แนะนำ WebM + AV1 + Opus เป็นชุดเปิดที่ไม่คิดค่าสิทธิ และรองรับดีในเบราว์เซอร์ ยกเว้น Safari บนอุปกรณ์รุ่นเก่า ถ้าต้องให้เล่นได้ทุกเครื่องควรเตรียมไฟล์ H.264 ไว้เป็นทางเลือกสำรอง เหมือนตัวอย่างโค้ด <source> สองรูปแบบที่ MDN ให้ไว้ คำแนะนำนี้เป็นของวิดีโอบนเว็บ ทีวีและกล่องสตรีมมิ่งอาจไม่รองรับ WebM หรือ AV1 จึงควรตรวจสเปกของเครื่องก่อน
  • ถ่ายด้วยกล้องหรือมือถือที่บันทึกเป็น H.265 ไฟล์ได้ขนาดเล็กลง แต่ตอนส่งให้คนอื่นเปิดหรือนำเข้าโปรแกรมตัดต่อเก่า ๆ อาจเจอปัญหาตามข้อข้างต้น ให้ตรวจการรองรับก่อน
  • ต้องการเก็บต้นฉบับระยะยาว เก็บไฟล์จากกล้องหรือมือถือไว้ตามเดิมโดยไม่แปลงใหม่ เพราะการแปลงแบบสูญเสียทำให้รายละเอียดเสียเพิ่ม MDN ระบุว่า codec แบบไม่สูญเสียมีอยู่จริงและมักใช้เก็บถาวรหรือเล่นในเครื่อง แต่ไฟล์ใหญ่มากและเบราว์เซอร์ทั่วไปเล่นไม่ได้

เหมือนกัน H.265 คือชื่อมาตรฐานของ ITU ส่วน HEVC (High Efficiency Video Coding) คือชื่อเต็มของ codec เดียวกัน

ไม่เสมอไป MDN ระบุว่า AV1 บีบอัดได้ดีกว่า H.265 และไม่มีค่าสิทธิ แต่ผลจริงขึ้นกับตัวเข้ารหัสและการตั้งค่า ก่อนเลือกควรตรวจว่าอุปกรณ์ที่ใช้เล่นรองรับ codec ไหน

เป็น container คนละแบบ เปรียบเหมือนกล่องบรรจุภัณฑ์ที่ต่างกัน ภาพและเสียงข้างในอาจใช้ codec ตัวเดียวกันก็ได้ MDN ระบุว่า MP4 เป็นมาตรฐานของอุตสาหกรรมสำหรับไฟล์วิดีโอ และรองรับกว้างในอุปกรณ์และเบราว์เซอร์

ตามข้อมูลของ MDN เบราว์เซอร์หลายตัวรองรับ HEVC โดยอาศัยฮาร์ดแวร์ถอดรหัส ถ้าเครื่องไม่มีหรือใช้ซอฟต์แวร์ถอดรหัส ผลการเล่นอาจต่างจากเครื่องที่มีฮาร์ดแวร์ แนะนำให้ตรวจสเปกของเครื่องและโปรแกรมเล่นที่ใช้ รวมถึงลองแปลงเป็น H.264 เพื่อเทียบ

มีผลกับการสตรีม เพราะ codec ที่บีบอัดดีกว่าใช้แบนด์วิดท์น้อยลงที่คุณภาพใกล้กัน AOMedia ระบุว่า AV1 ลดต้นทุนการสตรีมโดยลดขนาดไฟล์ แต่การเล่นไฟล์ในเครื่องหรือใน NAS ไม่ผ่านอินเทอร์เน็ต สิ่งที่สำคัญคือเครื่องเล่นรองรับ codec นั้นหรือไม่

  1. Web video codec guide — MDN Web Docs (Mozilla)
  2. Media container formats (file types) — MDN Web Docs (Mozilla)
  3. AV1 Video Codec — Alliance for Open Media