โหมดอัตราบิตของ 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
โหมด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 ช่วยให้โปรแกรมเปลี่ยนไฟล์รักษาระดับคุณภาพที่สมเหตุสมผลให้ฉากยาวๆ ได้ง่ายขึ้น
อย่างไรก็ตาม เรายังคงมีการจํากัดกระบวนการโดยการระบุช่วงที่สูงกว่า มิฉะนั้นอาจไม่มีการบีบอัดเลย นอกจากนี้ เรายังตั้งค่าช่วงล่างได้ด้วย แม้ว่ารูปภาพจะเป็นสีดําและกระบวนการเข้ารหัสแทบไม่ต้องทําอะไรเลย แต่เราจะยังส่งข้อมูลดังกล่าวให้อยู่ ซึ่งอาจจะมีประสิทธิภาพน้อยกว่าที่ควรจะเป็น แต่สุดท้ายแล้วผลที่ได้ก็แม้จะไม่ได้มีการบีบอัดสีดําและมีลักษณะเป็นสีดําและมีเครื่องหมายคําพูดสูงมาก
นอกจากนี้ เรายังต้องตั้งค่าเกณฑ์เชิงปริมาณอีกด้วย ใน 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 อาจมีการเข้ารหัสฉากแอ็กชันซึ่งมีอัตราบิตสูงกว่า &&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 จะตั้งค่าอัตราบิตสูงสุดเป็นเพดานและโควต้า ซึ่งหมายความว่ากระบวนการเข้ารหัสจะสร้างข้อมูลในอัตราที่เครือข่ายดําเนินการไม่ได้
ตัวอย่างเช่น สําหรับสตรีมการสื่อสารแบบเรียลไทม์ (การประชุมทางวิดีโอ) แอปพลิเคชันการเข้ารหัสไม่ทําให้เครือข่ายมีข้อมูลล้นเกินกว่าที่จะดําเนินการได้ แต่หากมีปัญหานี้ ปัญหาการซิงค์เสียง/ภาพหรือเฟรมที่ค้างส่งผลต่อประสบการณ์ของผู้ใช้อย่างมาก มากกว่าประสิทธิภาพในการบีบอัด 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
โดยจะสังเกตได้ว่าการตั้งค่า -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 |
จากที่คุณเห็น เวลาการเข้ารหัสสั้นลงแล้ว