สิ่งที่คุณคำนวณคือบิตเรตสำหรับวิดีโอที่ไม่มีการบีบอัด โดยทั่วไปคุณจะไม่พบสิ่งเหล่านี้ยกเว้นในการวิจัยหรือแอปพลิเคชันพิเศษอื่น ๆ แม้ผู้แพร่ภาพจะใช้วิดีโอที่บีบอัดถึงแม้ว่าบิตเรตจะสูงกว่าวิดีโอ YouTube ทั่วไปก็ตาม
ดังนั้นคุณภาพวิดีโอมีส่วนเกี่ยวข้องกับวิธีการบีบอัดวิดีโอ ยิ่งคุณบีบอัดยิ่งใช้เวลาน้อยลงเพียงเท่านี้ต่อหนึ่งเฟรม ยิ่งคุณบีบอัดยิ่งคุณภาพยิ่งแย่ ตอนนี้วิดีโอบางวิดีโอบีบอัดได้ง่ายกว่าวิดีโออื่น ๆ โดยสรุปแล้วนี่คือสาเหตุที่วิดีโอมีอัตราบิตต่ำกว่าแม้ว่าจะมีความละเอียดและอัตราเฟรมเท่ากัน
เพื่อให้เข้าใจว่าทำไมจึงเป็นเช่นนี้คุณต้องระวังการใช้การบีบอัดวิดีโอหลักสองข้อ สิ่งเหล่านี้เรียกว่า "เชิงพื้นที่" และ "ความซ้ำซ้อนทางโลก"
ความซ้ำซ้อนเชิงพื้นที่
ความซ้ำซ้อนเชิงพื้นที่มีอยู่ในภาพที่แสดงเนื้อหาตามธรรมชาติ นี่คือเหตุผลที่JPEG ใช้งานได้ดี - มันบีบอัดข้อมูลภาพเพราะบล็อกของพิกเซลสามารถถูกเขียนร่วมกันได้ ตัวอย่างเช่น 8 × 8 พิกเซลเช่น สิ่งเหล่านี้เรียกว่า "macroblocks"
ตัวแปลงสัญญาณวิดีโอที่ทันสมัยทำเช่นเดียวกัน: โดยทั่วไปพวกเขาใช้อัลกอริทึมที่คล้ายกันกับ JPEG เพื่อบีบอัดเฟรมบล็อกโดยบล็อก ดังนั้นคุณจะไม่เก็บบิตต่อพิกเซลอีกต่อไป แต่บิตต่อ macroblock เพราะคุณ "สรุป" พิกเซลเป็นกลุ่มขนาดใหญ่ อัลกอริธึมจะยกเลิกข้อมูลที่ไม่สามารถมองเห็นได้ด้วยตาเปล่าซึ่งนี่เป็นที่ที่คุณสามารถลดบิตเรตส่วนใหญ่ได้ มันทำงานโดยการหาปริมาณข้อมูล สิ่งนี้จะรักษาความถี่ที่สามารถรับรู้ได้มากขึ้นและ "ทิ้ง" สิ่งที่เรามองไม่เห็น ปัจจัยเชิงปริมาณแสดงเป็น "QP" ในตัวแปลงสัญญาณส่วนใหญ่และเป็นปุ่มควบคุมหลักสำหรับคุณภาพ
ตอนนี้คุณสามารถไปข้างหน้าและคาดการณ์ macroblock จาก macroblock ที่เคยเข้ารหัสก่อนหน้านี้ในภาพเดียวกัน นี้เรียกว่าการทำนายภายใน ตัวอย่างเช่นส่วนหนึ่งของกำแพงสีเทาถูกเข้ารหัสไว้แล้วที่มุมซ้ายบนของเฟรมดังนั้นเราจึงสามารถใช้ macroblock นั้นในเฟรมเดียวกันอีกครั้งตัวอย่างเช่น macroblock ที่อยู่ติดกับมัน เราจะเก็บความแตกต่างที่มีกับสิ่งก่อนหน้าและบันทึกข้อมูล ด้วยวิธีนี้เราไม่ต้องเข้ารหัส macroblock สองตัวที่คล้ายกันมาก
เหตุใดอัตราบิตจึงเปลี่ยนสำหรับขนาดภาพเดียวกัน ภาพบางภาพนั้นง่ายต่อการเข้ารหัสมากกว่าภาพอื่น ๆ กิจกรรมอวกาศยิ่งสูงขึ้นเท่าไหร่คุณต้องเข้ารหัสมากเท่านั้น พื้นผิวที่เรียบนั้นใช้บิตน้อยกว่ารายละเอียด เช่นเดียวกันสำหรับการคาดการณ์ภายใน: กรอบของผนังสีเทาจะช่วยให้คุณใช้ macroblock หนึ่งตัวเพื่อคาดการณ์อื่น ๆ ทั้งหมดในขณะที่เฟรมของน้ำไหลอาจไม่ทำงาน
ความซ้ำซ้อนชั่วคราว
สิ่งนี้มีอยู่เพราะเฟรมที่ตามหลังเฟรมอื่นน่าจะคล้ายกับรุ่นก่อนมาก ส่วนใหญ่การเปลี่ยนแปลงเพียงเล็กน้อยและมันไม่มีเหตุผลที่จะเข้ารหัสอย่างสมบูรณ์ สิ่งที่ตัวเข้ารหัสวิดีโอทำคือเข้ารหัสความแตกต่างระหว่างเฟรมต่อมาสองเฟรมเหมือนกับที่พวกเขาสามารถทำได้สำหรับ macroblock
ยกตัวอย่างจากบทความของ Wikipedia เกี่ยวกับการชดเชยการเคลื่อนไหวสมมติว่านี่เป็นเฟรมดั้งเดิมของคุณ:
จากนั้นความแตกต่างในเฟรมถัดไปคือ:
ตัวเข้ารหัสจะเก็บเฉพาะความแตกต่างจริงเท่านั้นไม่ใช่ค่าพิกเซลต่อพิกเซล นี่คือเหตุผลที่บิตที่ใช้สำหรับแต่ละเฟรมไม่เหมือนกันทุกครั้ง เฟรม "แตกต่าง" เหล่านี้ขึ้นอยู่กับเฟรมที่เข้ารหัสอย่างสมบูรณ์และนี่คือสาเหตุที่มีเฟรมอย่างน้อยสองประเภทสำหรับตัวแปลงสัญญาณรุ่นใหม่:
- I-frames (aka keyframes) - นี่คือเฟรมที่เข้ารหัสอย่างสมบูรณ์
- เฟรม P - เหล่านี้คือเฟรมที่เก็บความแตกต่าง
บางครั้งคุณจำเป็นต้องแทรก I-frames ลงในวิดีโอ บิตเรตที่แท้จริงขึ้นอยู่กับจำนวนของเฟรม I ที่ใช้ ยิ่งไปกว่านั้นยิ่งมีการเคลื่อนไหวที่แตกต่างกันระหว่างเฟรมต่อไปสองเฟรมยิ่งมีการเข้ารหัสมากขึ้น วิดีโอที่มีการเคลื่อนไหว "ไม่มีอะไร" จะเข้ารหัสได้ง่ายกว่าวิดีโอกีฬาและใช้บิตต่อเฟรมน้อยลง