คำจำกัดความหลักบางประการ:
- ตัวแปลงสัญญาณ (เช่น H.264, HEVC, VP9) รับผิดชอบเฉพาะส่วนของวิดีโอหรือเสียงและตัวแปลงสัญญาณอย่างน้อยหนึ่งตัวสามารถรวมเข้ากับคอนเทนเนอร์ได้
- คอนเทนเนอร์ (เช่น MP4, MKV) มีหน้าที่รับผิดชอบในการรวมเข้าด้วยกันและนี่คือสิ่งที่คุณมักจะเปิดในโปรแกรมเล่นสื่อที่คุณเลือก
- ตัวเข้ารหัสเฉพาะ (เช่น x264, libvpx) มีหน้าที่ในการเปลี่ยนอินพุตสตรีมเป็นบิตสตรีมที่เข้ากันได้กับตัวแปลงสัญญาณ มักจะมีตัวเข้ารหัสหลายตัวสำหรับตัวแปลงสัญญาณหนึ่งตัว
อย่างที่คุณเห็นเราจะต้องอธิบายบางสิ่งที่นี่
ตัวแปลงสัญญาณคืออะไร?
ตัวแปลงสัญญาณสั้นสำหรับการเข้ารหัส / ถอดรหัสซึ่งโดยทั่วไปก็หมายความว่าต่อไปนี้: ข้อมูลที่สร้างขึ้นโดยการเข้ารหัสจะสามารถถอดรหัสโดยถอดรหัสที่เหมาะสม สิ่งนี้เกิดขึ้นได้สำหรับวิดีโอเสียง แต่คุณอาจนึกถึงการเข้ารหัส (ตัวเข้ารหัสต้องการตัวถอดรหัสที่เหมาะสมเพื่อแสดงข้อความที่เข้ารหัส)
ทุกวันนี้เมื่อมีการระบุตัวแปลงสัญญาณวิดีโอสถาบันที่มีส่วนร่วมในนั้นมักจะระบุเฉพาะไวยากรณ์ของมาตรฐาน ตัวอย่างเช่นพวกเขาจะพูดว่า: "รูปแบบบิตสตรีมจะต้องเป็นเช่นนี้", " 0x810429AAB
ที่นี่จะถูกแปลเป็น" และอื่น ๆ บ่อยครั้งที่พวกเขาจัดหาตัวเข้ารหัสและถอดรหัสอ้างอิง แต่วิธีเขียนตัวเข้ารหัสเพื่อให้ตรงกับ รูปแบบขึ้นอยู่กับผู้ผลิต
นี่คือเหตุผลที่คุณจะพบตัวเข้ารหัสจำนวนมากสำหรับตัวแปลงสัญญาณเดียวกันมากและบางส่วนของพวกเขาในเชิงพาณิชย์
ตัวอย่างกรณี - H.264
ก่อนที่เราจะผสมคำศัพท์มาเป็นตัวอย่าง พิจารณากรณีสำหรับH.264 ชื่อมาตรฐานคือ H.264 ซึ่งไม่ใช่ชื่อของโปรแกรมเข้ารหัสจริง แนวคิดหลักเป็นตัวเข้ารหัสเชิงพาณิชย์ที่ดีมากในขณะที่x264เป็นตัวแปลงสัญญาณฟรีและโอเพนซอร์ส แน่นอนว่าทั้งสองมีคุณภาพที่ดี
ข้อเท็จจริงที่ว่าคุณสามารถเพิ่มประสิทธิภาพการเข้ารหัสที่ทำให้การแข่งขันที่นี่ ตัวเข้ารหัสทั้งสองจะส่งบิตสตรีมแบบมาตรฐานที่สามารถถอดรหัสได้เสมอโดยตัวถอดรหัสที่สอดคล้องกับ H.264
เพื่อสรุป
ดังนั้นโดยสรุปสมมติว่าตัวเข้ารหัสจะ:
- ใช้เฟรมวิดีโอ
- ผลิตบิตสตรีมที่ถูกต้อง
จากนั้นบิตสตรีมจะถูกทำมัลติเพล็กลงในคอนเทนเนอร์
ตัวถอดรหัสจะ:
- ใช้บิตสตรีมที่ถูกต้อง
- สร้างเฟรมวิดีโอใหม่จากนั้น
พวกเขาทั้งสองสอดคล้องกับมาตรฐานตัวแปลงสัญญาณ นั่นคือทั้งหมด!
ตัวแปลงสัญญาณปัจจุบัน
วันนี้คุณอาจจะพบเฉพาะวิดีโอที่เข้ารหัสด้วยตัวแปลงสัญญาณที่ฉันจะกล่าวถึงด้านล่าง ที่น่าสนใจเกือบทั้งหมดถูกสร้างขึ้นโดยกลุ่มผู้เชี่ยวชาญภาพยนตร์ (MPEG) แต่ก็มีตัวแปลงสัญญาณอื่น ๆ ที่ปลอดค่าลิขสิทธิ์เช่นกันเช่นที่สร้างโดย Google หรือ Alliance for Open Media ซึ่งเป็นคู่แข่งของมาตรฐาน MPEG
โปรดทราบว่า "MPEG" สามารถอ้างถึงตัวแปลงสัญญาณและคอนเทนเนอร์ตามที่คุณจะเห็นด้านล่าง สิ่งนี้เพิ่มความสับสน แต่เพียงรู้ว่า "MPEG" เพียงอย่างเดียวไม่ได้แปลความหมายอะไรเช่น "ฉันมีไฟล์ในรูปแบบ MPEG" นั้นไม่ชัดเจนมาก "
MPEG-2 ค่อนข้างเก่า รุ่นสาธารณะครั้งแรกของมันคือจากปี 1996 วิดีโอ MPEG-2 ส่วนใหญ่จะใช้สำหรับดีวีดีและการออกอากาศทางโทรทัศน์เช่น DVB-T หรือดาวเทียมและแอปพลิเคชันแบบดั้งเดิมที่มีความเข้ากันได้เป็นสิ่งสำคัญ วิดีโอ MPEG-2 ส่วนใหญ่จะพบในคอนเทนเนอร์. MPG
นี่อาจเป็นวิดีโอที่ใช้เป็นส่วนใหญ่ในการเข้ารหัสวิดีโอสำหรับเว็บในช่วงกลางปี 2000 แต่ถูกแทนที่ในระหว่างนี้ มันมีคุณภาพดีในขนาดไฟล์ที่ใช้ได้ซึ่งหมายความว่าคุณสามารถเขียนภาพยนตร์ทั้งเรื่องที่มีความยาว 90 นาทีลงบนซีดี 600 MB (ในขณะที่ MPEG-2 คุณต้องใช้ DVD ดูคำตอบของฉันที่นี่ ) มันใช้งานไม่ได้กับเนื้อหา HD หรือ 4K อีกต่อไป
รหัสบางตัวว่าการส่งออก MPEG-4 ส่วนที่ 2 วิดีโอDivXเปิดมา ripoff ของXviDและNero ดิจิตอล
วิดีโอ MPEG-4 ตอนที่ 2 ส่วนใหญ่มาในคอนเทนเนอร์AVIแต่MP4ก็มักจะเห็นเช่นกัน
นอกจากนี้ยังเป็นที่รู้จักกันเป็นMPEG-4 Advanced Video เข้ารหัส (AVC)หรือH.264 ; มันเป็นตัวแปลงสัญญาณที่ใช้มากที่สุดในวันนี้ มันมีคุณภาพดีในขนาดไฟล์เล็กดังนั้นจึงเหมาะอย่างยิ่งสำหรับวิดีโอทุกประเภทสำหรับอินเทอร์เน็ตหรืออุปกรณ์มือถือ คุณจะพบ H.264 ในแอปพลิเคชั่นที่ทันสมัยเกือบทุกประเภทตั้งแต่โทรศัพท์ไปจนถึงกล้องวิดีโอ บนดิสก์ Blu-ray ตอนนี้วิดีโอได้รับการเข้ารหัสใน H.264
ตัวเข้ารหัสบางตัวมีดังนี้: x264 , NVENC (จาก NVIDIA), เมนคอนเซ็ปต์ วิดีโอส่วนใหญ่มาในภาชนะMP4 , MKVหรือMOV
หรือที่เรียกว่า MPEG-H ตอนที่ 2 นี่คือตัวต่อของ MPEG-4 ตอนที่ 10 / AVC / H.264 มันมีจุดมุ่งหมายที่ความละเอียดสูงกว่า (สูงสุด8K ) และสามารถให้ประสิทธิภาพการเข้ารหัสที่สูงขึ้นถึง 50% (ในแง่ของคุณภาพเทียบกับบิตเรต) เทียบกับ H.264 (ดูบทความนี้เป็นต้น)
มาตรฐานดังกล่าวได้รับการเผยแพร่ในปี 2013 และอย่างช้าๆตัวแปลงสัญญาณเริ่มใช้งานมากขึ้นเรื่อย ๆ เช่นสำหรับ IPTV หรือการส่งสัญญาณวิดีโอออนไลน์ Apple ใช้ HEVC เพื่อเก็บวิดีโอและรูปภาพ (โดยใช้HEIF ) บน iOS อย่างไรก็ตามความจริงที่ว่ามีหลายกลุ่มสิทธิบัตรที่เกี่ยวข้องกับ HEVC มีหลาย บริษัท (เกือบทั้งหมดยกเว้น Apple) เปลี่ยนเป็นทางเลือกที่ไม่มีค่าลิขสิทธิ์ HEVC นั้นไม่ได้รับการสนับสนุนโดยเบราว์เซอร์ทั้งหมดทำให้ไม่สามารถใช้งานเว็บสตรีมมิ่งได้
ที่รู้จักกันดีคือการเข้ารหัสx265 นอกจากนี้ยังมีNVENC วิดีโอมักจะมาในคอนเทนเนอร์MP4
VP9 (ตัวตายตัวแทนของ VP8) เป็นตัวแปลงสัญญาณที่พัฒนาโดย Google เป็นหลัก มันเปิดอยู่และค่าภาคหลวงฟรีและดำเนินการในเบราว์เซอร์จำนวนมาก คุณภาพของมันเกือบจะดีเท่ากับ HEVC และบางครั้งก็ดีกว่า (ดูบทความนี้โดย Netflix) VP9 คือสิ่งที่คุณจะได้รับเมื่อคุณดู YouTube บนเบราว์เซอร์ที่รองรับ
VP9 สามารถเข้ารหัสด้วยตัวเข้ารหัสlibvpxและมักจะมาในคอนเทนเนอร์WebMหรือMKV
บาง บริษัท ได้รวมตัวกันเพื่อจัดตั้งคู่แข่งที่แข็งแกร่งยิ่งขึ้นต่อ HEVC - แต่เป็นทางเลือกที่ไม่มีค่าลิขสิทธิ์ AV1จะเป็นตัวตายตัวแทนของ VP9 และขึ้นอยู่กับสิ่งที่ควรจะเป็น VP10 ได้รับการสนับสนุนโดย Alliance for Open Media (ก่อตั้งโดย Amazon, Cisco, Google, Intel, Microsoft, Mozilla, และ Netflix) อ่านเพิ่มเติมได้ที่นี่
libaomเข้ารหัสสามารถนำมาใช้ในการสร้าง bitstreams AV1 แต่มันก็ยังคงทดลอง
รูปแบบ (คอนเทนเนอร์) คืออะไร
จนถึงขณะนี้เราได้อธิบายเฉพาะ "บิตสตรีม" ดิบซึ่งโดยทั่วไปเป็นเพียงข้อมูลวิดีโอที่แท้จริง จริงๆคุณสามารถไปข้างหน้าและดูวิดีโอโดยใช้บิตสตรีมแบบดิบ ๆ แต่ในกรณีส่วนใหญ่นั้นไม่เพียงพอหรือไม่สามารถใช้งานได้จริง
ดังนั้นคุณต้องห่อวิดีโอไว้ในคอนเทนเนอร์ มีสาเหตุหลายประการ:
- บางทีคุณอาจต้องการเสียงพร้อมกับวิดีโอ
- บางทีคุณอาจต้องการข้ามส่วนหนึ่งในวิดีโอ (เช่น "ไปที่ 1: 32: 20.12")
- ทั้งเสียงและวิดีโอควรซิงโครไนซ์อย่างสมบูรณ์แบบ
- วิดีโออาจต้องส่งผ่านเครือข่ายที่เชื่อถือได้และแบ่งเป็นแพ็กเก็ตก่อน
- วิดีโออาจถูกส่งผ่านเครือข่ายที่สูญหาย (เช่น 3G) และแบ่งเป็นแพ็กเก็ตก่อน
ด้วยเหตุผลเหล่านี้รูปแบบคอนเทนเนอร์จึงถูกคิดค้นขึ้นมาบางอย่างเรียบง่ายบางขั้นสูงขึ้นไป สิ่งที่พวกเขาทำคือ "ตัด" วิดีโอ bitstream เป็น bitstream อื่น
คอนเทนเนอร์จะซิงโครไนซ์วิดีโอและเสียงเฟรมตามการประทับเวลาการนำเสนอ (PTS) ของพวกเขาซึ่งทำให้แน่ใจว่าพวกเขาจะแสดงในเวลาเดียวกัน นอกจากนี้ยังดูแลการเพิ่มข้อมูลสำหรับการสตรีมเซิร์ฟเวอร์หากจำเป็นเพื่อให้สตรีมมิ่งเซิร์ฟเวอร์รู้ว่าเมื่อใดควรส่งไฟล์ส่วนใดของไฟล์
ลองดูที่คอนเทนเนอร์ยอดนิยม
ตู้คอนเทนเนอร์ยอดนิยม
คุณจะพบวิดีโอส่วนใหญ่ห่อในภาชนะดังต่อไปนี้ มีคนอื่น ๆ ที่ได้รับความนิยมน้อยกว่าเช่นกัน แต่อย่างที่ฉันพูดไปส่วนใหญ่มันคือ:
Audio Video Interleave - นี่คือคอนเทนเนอร์พื้นฐานที่สุดมันอยู่ที่นั่นเพื่อใช้สอดแทรกเสียงและวิดีโอ มันเขียนในปี 1992 และยังคงใช้มาจนถึงปัจจุบัน แต่ถือว่าเป็นมรดกดังนั้นอย่าใช้อีกต่อไป
ยังเป็นที่รู้จักกันในนามMPEG-4 ตอนที่ 14และเป็นไปตามรูปแบบไฟล์ QuickTime นี่เป็นรูปแบบ go-to สำหรับวิดีโอ H.264 แต่มันก็ครอบคลุม HEVC, MPEG-4 ตอนที่ 2 และ MPEG-2
ที่เก็บนี้อาจรวมไฟล์เสียงเท่านั้นซึ่งเป็นสาเหตุที่คุณจะพบไฟล์. mp4 จำนวนมากซึ่งไม่ใช่วิดีโอ แต่เป็นไฟล์เสียงที่เข้ารหัส AACแต่ยังอยู่ในไฟล์. m4a (เป็นนามสกุลที่แตกต่างกัน) นามสกุล. m4v มักใช้สำหรับวิดีโอ bitstreams
Matroska Video (MKV) เป็นรูปแบบไฟล์โอเพนซอร์สและฟรีที่มักพบในปัจจุบันเนื่องจากรองรับตัวแปลงสัญญาณใด ๆ จาก H.264 ถึง VP9 และแน่นอนยังมีตัวแปลงสัญญาณเสียงจำนวนมาก
WebM ใช้ MKV และใช้สำหรับวิดีโอ VP9 และ Opus audio เป็นหลักซึ่งเป็นตัวเลือกสำหรับวิดีโอสตรีมมิ่งเว็บเมื่อมีการใช้ตัวแปลงสัญญาณเหล่านี้
คอนเทนเนอร์ Ogg เป็นที่บรรจุตัวเลือกสำหรับตัวแปลงสัญญาณวิดีโอ Theora (และตัวแปลงสัญญาณเสียง Vorbis ) ซึ่งสร้างโดยมูลนิธิ Xiph.Org มันยังฟรีและโอเพ่นซอร์ส (เช่นเดียวกับตัวแปลงสัญญาณ)
Adobe สร้างรูปแบบวิดีโอ Flash เพื่อใช้ในแอพพลิเคชั่นสตรีมมิ่ง ไม่ได้ใช้อีกต่อไปเนื่องจากวิธีการสตรีมมิ่งได้เปลี่ยนไปอย่างมีนัยสำคัญในช่วงหลายปีที่ผ่านมา
ตัวแปลงสัญญาณและรูปแบบที่นิยม
นอกจากนี้ข้อใดต่อไปนี้คือตัวแปลงสัญญาณซึ่งเป็นรูปแบบไฟล์และอันไหนบ้าง
- Quicktime MOV : .movเป็นนามสกุลไฟล์สำหรับQuickTime File Formatซึ่งเป็นคอนเทนเนอร์ที่สร้างโดย Apple ภาชนะนี้ถูกดัดแปลงในภายหลังสำหรับ MP4 มันสามารถแปลงสัญญาณทุกชนิด Quicktimeเป็นกรอบงานของสื่อทั้งหมดมันไม่ได้ระบุตัวแปลงสัญญาณเองเท่าที่ฉันกังวล
- MPEG (1, 2, 3, 4) : มาตรฐานที่กำหนดโดยกลุ่มผู้เชี่ยวชาญภาพยนตร์ ดูโพสต์ของฉันด้านบนสำหรับรายละเอียด
- WMV : Windows Media Video อันที่จริงมันเป็นตัวแปลงสัญญาณห่อในคอนเทนเนอร์Advanced Systems Formatซึ่งใช้นามสกุล. wmvอีกครั้ง แปลก แต่นั่นคือวิธีที่มันเป็น
- FFmpeg : นี่ไม่ใช่ตัวแปลงสัญญาณหรือคอนเทนเนอร์ เป็นไลบรารีของเครื่องมือวิดีโอที่อนุญาตการแปลงระหว่างตัวแปลงสัญญาณและคอนเทนเนอร์ที่แตกต่างกัน FFmpeg อาศัยโอเพนซอร์ส
libavcodec
และlibavformat
ไลบรารีสำหรับการสร้างตัวแปลงสัญญาณและคอนเทนเนอร์ตามลำดับ เครื่องมือวิดีโอส่วนใหญ่ที่คุณพบในปัจจุบันนั้นใช้เครื่องมือนี้
- AVC : คำพ้องความหมายสำหรับ MPEG-4 ตอนที่ 10 หรือ H.264
- DivX : ตัวเข้ารหัสอีกประเภทหนึ่งสำหรับวิดีโอ MPEG-4 ตอนที่ 2
- Xvid : ตัวเข้ารหัสประเภทหนึ่งสำหรับวิดีโอ MPEG-4 ตอนที่ 2 มันเป็นแค่โอเพ่นซอร์ส DivX เวอร์ชั่นฟรีซึ่งแน่นอนว่าทำให้เกิดข้อโต้แย้ง
- H.264 : คำพ้องความหมายสำหรับ MPEG-4 ตอนที่ 10 หรือ AVC
ในหมายเหตุด้าน:
ฉันยังใช้คำศัพท์ที่ถูกต้องหรือไม่
ฉันเดาว่าครั้งหนึ่งต้องการใช้ "codec" และ "container" โดยเฉพาะแทน "format" เพื่อหลีกเลี่ยงความเข้าใจผิด รูปแบบตามหลักวิชาสามารถเป็นอะไรก็ได้เนื่องจากทั้งตัวแปลงสัญญาณและคอนเทนเนอร์ระบุรูปแบบ (เช่นวิธีการแสดงข้อมูล)
ที่ถูกกล่าวคำศัพท์FFmpegจะใช้ "รูปแบบ" สำหรับภาชนะ นี่เป็นเพราะความแตกต่างระหว่าง:
libavcodec
ไลบรารีสำหรับการเข้ารหัส / ถอดรหัส
libavformat
ไลบรารีสำหรับคอนเทนเนอร์