โหมดอัตราบิตของ VP9 ในรายละเอียด

บทนำ

แม้ว่าเราจะให้รายละเอียดระดับสูงเกี่ยวกับโหมดอัตราบิตในหน้าการเข้ารหัสพื้นฐาน แต่โหมดดังกล่าวจะจัดการเฉพาะโหมด CQ (คุณภาพจํากัด) เท่านั้น

เอกสารนี้จะพูดถึงวิธีอื่นๆ ที่ใช้ได้จริง คุณสามารถปรับแต่งอัตราบิต VP9 เพื่อเพิ่มประสิทธิภาพสําหรับสถานการณ์ต่างๆ ตัวอย่างด้านล่างใช้ FFmpeg

การบีบอัด

เทคโนโลยีการบีบอัดวิดีโอ เช่น VP9 มีเป้าหมายเพื่อลดปริมาณข้อมูลที่ต้องใช้ในการถ่ายทอดภาพและความเข้าใจที่เข้าใจได้แก่ผู้ใช้ปลายทาง

หนึ่งในเทคนิคหลักที่ใช้เพื่อให้บรรลุเป้าหมายนี้คือการวัดปริมาณ ควอนเซอร์ทําให้องค์ประกอบต่างๆ ของรูปภาพแบบดิจิทัลทําให้รูปภาพดูง่ายขึ้น เช่น อาจลดช่วงสีที่ใช้ และอาจใช้ฟังก์ชันทางคณิตศาสตร์กับข้อมูล & & ตัดคําพูด & ตัดคํา & เลิกทําให้ขาดความละเอียดที่รับรู้ได้ภายในช่วงสีที่ลดลง ซึ่งมีหน้าที่หลายอย่าง

ปริมาณ (หรือ &&tt;Q") นั้นแสดงอยู่ในบทความ Wikipedia ของบทความนั้น

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

ในท้ายที่สุดเมื่อมีจํานวนเชิงปริมาณ (ตัวเลข Q ที่สูงขึ้น) รายละเอียดก็จะสูญหายและคุณภาพต่ําลง แต่จะต้องใช้ข้อมูลน้อยลงเพื่อจัดเก็บเฟรม ในกรณีส่วนใหญ่ โปรแกรมเปลี่ยนไฟล์ VP9 จะช่วยให้บรรลุเป้าหมายด้านอัตราบิตโดยการเปลี่ยนแปลง Q เมื่อเวลาผ่านไป ทั้งนี้ขึ้นอยู่กับความซับซ้อนของแต่ละเฟรม

การเพิ่มประสิทธิภาพกรณีการใช้งาน

เพื่อช่วยให้ผู้ใช้ "tune" การบีบอัด VP9 ตอบสนองความต้องการเฉพาะได้ เป็นไปไม่ได้ที่จะปรับสมดุลคุณภาพและอัตราบิตในขณะที่บีบอัดครั้งแรกผ่านอินเทอร์เฟซเขียนโปรแกรมจํานวนมาก

โปรแกรมเปลี่ยนไฟล์มีการเลื่อนระหว่างความเร็ว คุณภาพ และอัตราบิต

  • หากผู้ใช้มุ่งเน้นที่คุณภาพ ต้องเตรียมพร้อมสําหรับการเข้ารหัสที่นานขึ้นหรือจัดหาทรัพยากรในการประมวลผลที่รวดเร็วขึ้นและมีปริมาณมากขึ้น

  • หากผู้ใช้มุ่งเน้นไปที่การตรวจสอบว่าไฟล์ที่เข้ารหัส VP9 เอาต์พุตมีขนาดเล็กและนําส่งได้อย่างรวดเร็ว ผู้ใช้ต้องเตรียมลดระยะเวลาที่สามารถประมวลผลจํานวนเชิงปริมาณของรูปภาพได้ และทําให้มีรายละเอียดน้อยลงว่าโปรแกรมตรวจสอบเสียงจะทํางานได้อย่างไร

  • หากผู้ใช้มุ่งเน้นไปที่ความเร็วในการนําส่ง (เช่น ใน Webcast หรือการประชุมทางวิดีโอแบบ 2 ทาง) เท่านั้น จํานวนย่อยอาจต่างจากข้อจํากัดเกี่ยวกับอัตราที่ไบต์ข้อมูลที่ใช้ได้สามารถนําไปจัดสรรในเครือข่าย (กล่าวคือ "bitrate")

ตัวเลือกที่ถูกต้องจะเฉพาะเจาะจงกับกรณีการใช้งานแต่ละรายการ VP9 รองรับการกําหนดค่าที่ตรงไปตรงมาใน 4 โหมด "" เพื่อให้ปรับยอดคงเหลือนี้ให้เหมาะสมกับกรณีการใช้งานของคุณได้ง่ายขึ้น

โหมดอัตราบิต VP9

เริ่มจากการดูที่โหมดอัตราบิตหลักที่ VP9 รองรับ

โหมด
ค่าคงที่ (Q) ช่วยให้คุณระบุค่าตัวระบุเสียงคงที่ อัตราบิตจะแตกต่างกันไป
คุณภาพจํากัด (CQ) ช่วยให้คุณกําหนดระดับคุณภาพสูงสุดได้ คุณภาพอาจแตกต่างกันไปตามพารามิเตอร์อัตราบิต
อัตราบิตแปรผัน (VBR) รักษาสมดุลระหว่างคุณภาพและอัตราบิตในช่วงเวลาต่างๆ ภายในข้อจํากัดเกี่ยวกับอัตราบิต
อัตราบิตคงที่ (CBR) พยายามรักษาอัตราบิตให้ค่อนข้างคงที่ในขณะที่คุณภาพแตกต่างกันไป

Q

แผนภูมิโหมด Q

โหมดQuantizer แบบคงที่เป็นตัวเลือกที่ดีสําหรับกรณีที่ข้อกังวลเกี่ยวกับขนาดไฟล์และอัตราบิตนั้นต่ํากว่าคุณภาพสุดท้ายโดยสมบูรณ์

Use Case สําหรับการตั้งค่า Q อาจปรากฏในโรงภาพยนตร์ดิจิทัล ชุดแก้ไขดิจิทัล หรือแอปพลิเคชันป้ายดิจิทัล ซึ่งเนื้อหาจะแสดงได้ในแพลตฟอร์มสื่อกายภาพหรือในระยะเวลาที่ไม่มีข้อจํากัด โดยเนื้อหาจะมีคุณภาพดีอยู่แล้วและเอาต์พุตที่ต้องการต้องมีคุณภาพสูงสุด

การเพิ่มประสิทธิภาพอัตราบิตในโหมด VP9 Q

โหมดQuantizer แบบคงที่ต้องมีการกําหนดค่าน้อยที่สุด ขอแนะนําว่าโหมด Q จะเน้นการรักษาปริมาณที่เป้าหมายในระดับคุณภาพ และคุณภาพระดับคุณภาพ และปล่อยให้เชิงปริมาณกําหนดขั้นตอนของข้อมูลที่ต้องการประมวลผล สิ่งที่ผู้ใช้ต้องกําหนดคือคุณภาพเป้าหมาย

ข้อมูลเพิ่มเติมเกี่ยวกับคุณภาพเป้าหมายที่เจาะจงจากโฟกัสการประมวลผลรูปภาพ (ไม่ใช่โฟกัสอัตราบิต) ในบทความการเข้ารหัสพื้นฐาน

ใช้พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้สําหรับการเพิ่มประสิทธิภาพอัตราบิตของโหมด Q

ffmpeg
-b:v 0 การตั้งอัตราบิตของวิดีโอเป็น 0 จะทําให้เราตั้งค่า "Q" อย่างชัดแจ้ง
-g <arg> ตั้งค่าช่วงคีย์เฟรมในเฟรม (ค่าเริ่มต้นคือ 240)
-crf <arg> ตั้งระดับคุณภาพสูงสุด ค่าที่ใช้ได้คือ 0-63 ตัวเลขต่ํากว่ามีคุณภาพสูงกว่า
-quality good -speed 0 ค่าเริ่มต้นและแนะนําสําหรับแอปพลิเคชันส่วนใหญ่ best เป็นมากกว่าเครื่องมือวิจัย โดยมีการปรับปรุงเพียงเล็กน้อยเหนือ -quality good -speed 0
-lossless โหมด Lossless

อัตราบิตของโหมด Q : ตัวอย่าง FFmpeg

ตัวอย่างที่ 1 คือการตั้งค่าโหมด Q อย่างยิ่ง และมีไว้สําหรับภาพเท่านั้น (แม้การประมวลผลคลิป 120 วินาทีในตัวอย่างเหล่านี้จะใช้เวลาหลายชั่วโมง และโดยทั่วไป ไฟล์เอาต์พุตที่สร้างขึ้นจะใหญ่กว่าแหล่งที่มาต้นฉบับมาก)

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -g 1 -b:v 0 -crf 0 -quality good \
  -speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm

หากต้องการเปรียบเทียบผลกระทบของ -crf ตัวอย่างต่อไปนี้จะแตกต่างกันไปตาม -crf โปรดทราบว่า -g ไม่ได้ถูกไว้ ดังนั้นจะมีค่าเริ่มต้นเป็น 240 และในทางปฏิบัติ -crf จะมีค่าเริ่มต้นเป็น 10 ดังนั้นเราจะให้ผลลัพธ์เดียวกันโดยไม่มีพารามิเตอร์ใดตัวอย่างหนึ่งจากตัวอย่างที่สองใน 3 ตัวอย่าง

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 0 -quality good \
  -speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

เอาต์พุตของตัวอย่างเหล่านี้มีขนาดบนดิสก์แตกต่างกัน หากตั้งค่า -crf เป็น 0 ไฟล์จะเป็น 711.8 MB ส่วน -crf ตั้งค่าเป็น 10 มีขนาด 125.3 MB และมี -crf ตั้งค่าเป็น 63 ทําให้ไฟล์มีขนาด 4.5 MB กล่าวง่ายๆ ก็คือไฮไลต์ของเราทําให้คุณภาพของไฟล์ที่เข้ารหัสด้วย VP9 ลดลงด้วยการเพิ่มมูลค่าของอาร์กิวเมนต์ -crf ข้อมูลสรุปทั้งหมดของไฟล์เอาต์พุตทั้งหมดจะอยู่ในตารางผลลัพธ์ด้านล่าง

มาเปรียบเทียบผลกระทบของการตั้งค่า -g แบบต่างๆ กัน

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 1 -b:v 0 -quality good \
  -speed 0  -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 240 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 480 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm

เราพบว่าการตั้งค่า -g 1 จะสร้างไฟล์ขนาดใหญ่มาก โดยมีขนาด 25.9 MB ลองเปรียบเทียบกับการเปลี่ยนแปลง -g 240 (การตั้งค่าเริ่มต้นเป็นค่าเริ่มต้น) ซึ่งเราได้ไฟล์ 4.5 MB และ -g 480 ส่วนที่เราลงท้ายด้วยไฟล์ 4.4 MB

สํานักงานใหญ่

CQ เป็นโหมดที่แนะนําสําหรับวิดีโอตามไฟล์

แผนภูมิของโหมด CQ

สําหรับประเภทเนื้อหาส่วนใหญ่ เราขอแนะนําให้ใช้โหมดคุณภาพที่จํากัด (CQ) พร้อมอัตราบิต วิดีโอส่วนใหญ่มีทั้งฉากที่มีการเคลื่อนไหวสูง (เช่น ฉากแอ็กชัน) และฉากที่มีรายละเอียดน้อยลง (เช่น การสนทนา) โหมด CQ ช่วยให้โปรแกรมเปลี่ยนไฟล์รักษาระดับคุณภาพที่สมเหตุสมผลให้ฉากยาวๆ ได้ง่ายขึ้น

อย่างไรก็ตาม เรายังคงมีการจํากัดกระบวนการโดยการระบุช่วงที่สูงกว่า มิฉะนั้นอาจไม่มีการบีบอัดเลย นอกจากนี้ เรายังตั้งค่าช่วงล่างได้ด้วย แม้ว่ารูปภาพจะเป็นสีดําและกระบวนการเข้ารหัสแทบไม่ต้องทําอะไรเลย แต่เราจะยังส่งข้อมูลดังกล่าวให้อยู่ ซึ่งอาจจะมีประสิทธิภาพน้อยกว่าที่ควรจะเป็น แต่สุดท้ายแล้วผลที่ได้ก็แม้จะไม่ได้มีการบีบอัดสีดําและมีลักษณะเป็นสีดําและมีเครื่องหมายคําพูดสูงมาก

นอกจากนี้ เรายังต้องตั้งค่าเกณฑ์เชิงปริมาณอีกด้วย ใน VP9 เกณฑ์ของควอนเซอร์ อาจมีได้ตั้งแต่ 0 ถึง 63

พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้จะใช้สําหรับโหมด CQ
ffmpeg
-b:v <arg> ตั้งค่าอัตราบิตเป้าหมาย (เช่น 500,000)
-minrate <arg>
-maxrate <arg>
ตั้งค่าอัตราบิตต่ําสุดและสูงสุด
-crf <arg> ตั้งระดับคุณภาพสูงสุด ค่าที่ใช้ได้คือ 0 ถึง 63 และตัวเลขต่ํากว่าจะมีคุณภาพสูงกว่า
โหมดอัตราบิตของ CQ: ตัวอย่าง FFmpeg

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

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1000k -maxrate 4000k -crf 10  -c:a libvorbis \
  CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm

ไฟล์เอาต์พุตในอินสแตนซ์นี้มีขนาด 20.2 MB ในดิสก์ ซึ่งมีขนาดเล็กกว่าการเข้ารหัสโหมด Q ในตัวอย่างข้างต้นอย่างเห็นได้ชัด

ในทางตรงกันข้ามกับตัวอย่างถัดไป เราจํากัดอัตราบิตให้อยู่ในช่วงที่กําหนดใกล้เคียงกันมาก

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10  -c:a libvorbis \
  CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm

ในตัวอย่างนี้ ขนาดไฟล์เอาต์พุตคือ 24.1 MB และหากภาพมีความซับซ้อนและการเคลื่อนไหวสูง คุณภาพของวิดีโอจะลดลงอย่างมากเมื่อเปรียบเทียบกับตัวอย่างก่อนหน้านี้

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

ในตัวอย่างสุดท้าย เอาต์พุตมีขนาดลดลงอย่างมากจนลดลงเหลือ 13.2 MB ในดิสก์

บราซิล

แนะนําให้ใช้โหมดอัตราบิตแปรผัน (VBR) ในการสตรีมไฟล์วิดีโอตามคําขอแบบภาพยนตร์ (เช่น กีฬา) เหมาะสําหรับการแสดงโฆษณาแบบ HTTP

แผนภูมิโหมด VBR

ในโมเดล VBR อาจมีการเข้ารหัสฉากแอ็กชันซึ่งมีอัตราบิตสูงกว่า &&tt;easier"ฉากซึ่งสอดคล้องกับคีย์เฟรม

สําหรับรูปแบบการนําส่งสตรีมมิงขนาดใหญ่ ประโยชน์ของ VBR อาจเพิ่มขึ้นอย่างมากทั้งในการจัดจําหน่ายและโครงสร้างพื้นฐาน เมื่อมีการส่งสตรีม VBR จํานวนมากจากโครงสร้างพื้นฐานเดียวกัน จะเป็นประโยชน์ต่อผู้ชมทุกคนที่ใช้ระบบ

ขอแนะนํา VP9 VBR สําหรับการเข้ารหัสกีฬาและเนื้อหาอื่นๆ ที่มีการเคลื่อนไหวสูง สําหรับเนื้อหาที่ซับซ้อนมาก VBR จะช่วยให้วิดีโอมีคุณภาพสูงขึ้นในช่วงที่มีการเคลื่อนไหวต่ํา

พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้ใช้สําหรับโหมด VBR
ffmpeg
-quality good หากมีส่วนนี้ FFmpeg จะพิจารณาการตั้งค่า -speed ที่ตามมา
-speed <arg> สําหรับ VIDEO ON DEMAND ค่าที่ใช้ได้คือ 0-4 โดยที่ 0 หมายถึงคุณภาพสูงสุดและ 4 คือต่ําสุด (สําหรับสตรีมมิงแบบสด ช่วง 5-8 โปรดดู - CBR ด้านล่าง)
โหมดอัตราบิตของ VBR: ตัวอย่าง FFmpeg
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 0  -c:a libvorbis \
  VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

CBR

แนะนําให้ใช้โหมดอัตราบิตคงที่ (CBR) สําหรับสตรีมมิงแบบสดด้วย VP9

แผนภูมิโหมด CBR

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

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

พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้ใช้สําหรับโหมด CBR
ffmpeg
-quality realtime หากมีส่วนนี้ FFmpeg จะพิจารณาการตั้งค่า -speed ที่ตามมา
-speed <arg> สําหรับสตรีมมิงแบบสด ค่าที่ใช้ได้คือ 5 ถึง 8 โดย 5 คือคุณภาพสูงสุด และ 8 คือต่ําสุด (สําหรับวิดีโอแบบออนดีมานด์ ค่าเหล่านี้คือ 0 ถึง 4 ดู VBR ด้านบน)
-minrate <arg>
-maxrate <arg>
ตั้งค่าอัตราบิตต่ําสุดและสูงสุด ** ต้องตั้งค่าเป็นอัตราบิต -b:v เดียวกันสําหรับโหมด CBR**

กล่าวง่ายๆ คือ เราจะแก้ไขอัตราบิต เป้าหมายขั้นต่ํา และสูงสุดเป็นค่าเดียวกัน และบอกตัวประมวลผลว่าการดําเนินการจะต้องตรงตามเวลา

โหมดอัตราบิตของ CBR: ตัวอย่าง FFmpeg

ตัวอย่างด้านล่างนี้สํารวจการตั้งค่าอัตราบิตเป็นเป้าหมาย 2 Mbps และ 500 kbps

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
  CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

ผลลัพธ์

การเข้ารหัสข้างต้นแต่ละรายการจะดําเนินการบนระบบ Ubuntu Linux ที่มีข้อกําหนดต่อไปนี้

  • โปรเซสเซอร์: Intel(R) Core(TM) i5-6500 CPU 4 เท่า ที่ 3.20 GHz
  • หน่วยความจํา (RAM): 8060 MB (ใช้แล้ว 1492 MB)
  • กราฟิก: Intel HD Graphics 530 (Skylake GT2)
  • OS: Ubuntu 16.04 LTS

ไฟล์แหล่งที่มาในทุกกรณีคือคลิป 1 นาที 20 วินาที (1:20) ที่คัดมาจาก Tears Of Steel

ไฟล์ นาทีการเข้ารหัส ขนาดไฟล์ในดิสก์
Q_g_1_crf_0_120s_tears_of_steel_1080p.webm 81 1.06GB
Q_crf_0_120s_tears_of_steel_1080p.webm 131 711.8MB
Q_crf_10_120s_tears_of_steel_1080p.webm 118 125.3MB
Q_crf_63_120s_tears_of_steel_1080p.webm 27 4.5MB
Q_g_1_120s_tears_of_steel_1080p.webm 51 25.9MB
Q_g_240_120s_tears_of_steel_1080p.webm 28 4.5MB
Q_g_480_120s_tears_of_steel_1080p.webm 10 4.4MB
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm 11 20.2MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1MB
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm 50 13.2MB
VBR_good_0_120s_tears_of_steel_1080p.webm 3 23.4MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9MB
VBR_good_8_120s_tears_of_steel_1080p.webm 1 23.9MB
CBR_2000_realtime_speed_0_120s_tears_of_steel_1080p.webm 98 21MB
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 2 24.8MB
CBR_2000_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 21MB
CBR_500_realtime_speed_0_120s_tears_of_steel_1080p.webm 73 6.2MB
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 8.5MB
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 7.1MB

โดยจะสังเกตได้ว่าการตั้งค่า -speed ที่สูงกว่า 5 จะแปลงความเร็วในการประมวลผลของ VP9 แม้ว่าวิธีนี้จะเป็นการเพิ่มปริมาณได้อย่างมาก (เห็นได้จากผลกระทบอย่างมากจากอัตราบิต & เครื่องหมายคําพูด) ที่มีต่ออัตราบิตด่วนที่มีคุณภาพต่ํามาก แต่ VP9 ก็ยังคงผลิตเอาต์พุตที่มีอัตราบิต 1080p ต่ํามากได้ แม้ว่าเหมาะกับอุปกรณ์เคลื่อนที่ขนาดเล็กกว่าจอแสดงผลขนาดใหญ่

ข้อควรพิจารณาสําหรับกรณีการใช้งานที่มีการปรับขนาดใหม่ (การปรับขนาดใหม่)

โหมดอัตราบิตของ VP9' ไม่ได้แยกออกจากกันอย่างชัดเจน และอาจใช้ร่วมกับอาร์กิวเมนต์และพารามิเตอร์อื่นอีกมากมายเพื่อกําหนดเป้าหมายกรณีการใช้งานโดยเฉพาะ กรณีการใช้งานทั่วไปอย่างหนึ่งคือการปรับขนาดมิติข้อมูลวิดีโอซ้ําเพื่อกําหนดเป้าหมายอุปกรณ์ที่เฉพาะเจาะจง

ตัวอย่างแบบคลาสสิกคือการเปลี่ยนสตรีม HD เป็นเอาต์พุต SD ขอย้ําอีกครั้งว่าการดําเนินการนี้จะมีผลอย่างมากต่อเวลาในการประมวลผลและเอาต์พุต ในกรณีที่คําสั่ง FFmpeg 2 คําสั่งเหมือนกันทุกประการ การลดขนาดวิดีโอเอาต์พุตก็จะเปลี่ยนแปลงขนาดของไฟล์ที่ได้และเป็นอัตราบิตของโมเดลในโมเดลสตรีมมิง

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

โหมด Q
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
โหมด CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
โหมด VBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
โหมด CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

ตารางผลลัพธ์ของการปรับขนาด

ไฟล์ นาทีการเข้ารหัส ขนาดไฟล์ในดิสก์
640x480_Q_crf_10_120s_tears_of_steel_1080p.webm 5 3.4MB
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm 2 22.4MB
640x480_VBR_good_5_120s_tears_of_steel_1080p.webm 1 22.6MB
640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm 4 23MB

เพื่อให้เปรียบเทียบได้ง่าย ต่อไปนี้คือคําสั่ง FFmpeg เดียวกันจากตัวอย่างก่อนหน้านี้ แต่ไม่มีการปรับขนาด

ไฟล์ นาทีการเข้ารหัส ขนาดไฟล์ในดิสก์
Q_crf_10_120s_tears_of_steel_1080p.webm 56 126MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9MB
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 24.8MB

จะเห็นได้ว่าไฟล์เอาต์พุตแต่ละรายการมีขนาดลดลงอย่างเห็นได้ชัด ในขณะที่ตัวอย่างส่วนใหญ่แล้วมีการลดเวลาในการเข้ารหัส แต่ในโหมด Q นั้นเวลาเข้ารหัสเพิ่มขึ้นจริง การบีบอัดวิดีโอ " more" ต้องใช้ความพยายามมากขึ้น ดังนั้นแม้ว่าไฟล์เอาต์พุตจะคาดว่าจะเล็กกว่านี้ก็ตามหากคุณภาพไม่จํากัด (ขณะอยู่ในโหมด Q) แต่จริงๆ แล้วอาจทําให้ต้องใช้เวลามากขึ้นในการสร้างไฟล์เอาต์พุต อย่าทึกทักเอาว่าไฟล์ที่เล็กลงอาจส่งได้เร็วขึ้นตามกระบวนการเข้ารหัส

การปรับขนาดและการลดอัตราบิตร่วมกัน

เพื่อเป็นการเปรียบเทียบในตัวอย่างสุดท้าย ให้เรียกใช้ CQ, VBR และตัวอย่าง CBR ของการปรับขนาดอีกครั้ง แต่ขณะนี้เราจํากัดอัตราบิตเป้าหมายไว้ที่ 500kbps (ประมาณ 1/4) (สอดคล้องกับการปรับลดขนาดของรูปภาพ)

โหมด CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 550k -crf 10 -vf  scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
โหมด VBR
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
โหมด CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

ตารางของผลลัพธ์ในการปรับขนาดมาตรฐานและลดอัตราบิตเป้าหมาย

ไฟล์ นาทีการเข้ารหัส ขนาดไฟล์ในดิสก์
640x480_CQ_500_crf_0_120s_tears_of_steel_1080p.webm 1 7MB
640x480_VBR_500_good_5_120s_tears_of_steel_1080p.webm 1 7MB
640x480_CBR_500_realtime_5_120s_tears_of_steel_1080p.webm 1 7.6MB

จากที่คุณเห็น เวลาการเข้ารหัสสั้นลงแล้ว