מצבי קצב העברת נתונים של VP9 בפרטים

מבוא

אמנם אנחנו מספקים פרטים ברמה גבוהה לגבי מצבי קצב העברת נתונים בדפים קידוד בסיסי, אבל הם מתייחסים רק למצב CQ (איכות מוגבלת).

המסמך הזה מפרט דרכים מעשיות נוספות להתאמה של קצבי העברת הנתונים של VP9 כדי לבצע אופטימיזציה למגוון תרחישים. בדוגמאות הבאות נעשה שימוש ב-FFmpeg.

דחיסה

טכנולוגיות לדחיסת סרטונים, כמו VP9, נועדו לצמצם את כמות הנתונים שדרושה כדי להציג למשתמשי הקצה תמונה ותחושת תנועה מובנים.

אחת מהשיטות המרכזיות להשגת מטרה זו היא כימות. מכמת כמויות מבחינה פשוטה מפשטת את הרכיבים הדיגיטליים השונים של התמונה. לדוגמה, הוא עשוי להפחית את טווח הצבעים המשמש ואת פונקציות מתמטיות נוספות לנתונים כדי להטות את הבעיה; להטות את &הצורה; את היעדר הרזולוציה התקינה בטווח הצבעים המוקטן. יש הרבה פונקציות כאלה.

הקוונציה (או &מירכאות;Q") מתוארת היטב במאמר בוויקיפדיה.

ב-VP9, החישוב הקונטיננטלי מתבצע במקדמי השינוי. פעולה זו מפחיתה את קצב העברת הנתונים הנדרש כדי לשמור על איכות נראית לעין, על ידי הוספת הקידוד.

בסופו של דבר, כשיש יותר קונטיקט (מספר Q גבוה יותר), הפרטים אבדים והאיכות נמוכה יותר, אבל נדרשים פחות נתונים כדי לאחסן את המסגרת. ברוב המקרים, המקודד של VP9 מגיע ליעדים של קצב העברת הנתונים על ידי שינוי Q לאורך זמן, בהתאם למורכבות של כל מסגרת.

שימוש באופטימיזציה של תרחישים

כדי לאפשר למשתמש לבצע דחיסה של VP9 לצרכים הספציפיים שלהם, ניתן להתאים את איזון האיכות והקצב של העברת הנתונים בעת הדחיסה הראשונית דרך מספר ממשקי תכנות.

המקודד מפגין תזוזה בין המהירות, האיכות וקצב העברת הנתונים.

  • אם המשתמש מתמקד באיכות, יש להכין אותו לזמן ארוך יותר או לספק משאבים מהירים ומהירים יותר.

  • אם המשתמש מתמקד בשמירה של קובץ הקידוד VP9 קטן, כדי שהוא יוכל להיטען במהירות, הוא צריך להיות מוכן להפחתת הזמן שהעיבוד של התמונה יכול לעבד. העיבוד יגרום לכך שהפרטים יהיו פחות מדויקים.

  • אם המשתמש מתמקד רק במהירות מסירה (לדוגמה, בשידור חי באינטרנט או בשיחת ועידה דו-כיוונית), ייתכן שההחלטה מותנית בהגבלה על השיעור שבו אפשר להעביר בייטים של נתונים שניתן להשתמש בהם ברשת (כלומר, "bitrate").

הבחירה הנכונה תהיה ספציפית מאוד לכל מקרה שימוש. כדי לפשט את ההתאמה של התרחיש הזה לתרחיש לדוגמה שלכם, שירות VP9 תומך בהגדרה פשוטה בארבעה מצבים של "bitrate."

מצבי קצב העברת נתונים של VP9

בתור התחלה, נבחן את מצבי קצב העברת הנתונים העיקריים שנתמכים ב-VP9:

מצב
קוואנטר קבוע (Q) מאפשר לציין ערך כמותי קבוע; קצב העברת הנתונים ישתנה
איכות מוגבלת (CQ) מאפשרת להגדיר רמת איכות מקסימלית. האיכות עשויה להשתנות בהתאם לפרמטרים של קצב העברת הנתונים
קצב העברת נתונים משתנה (VBR) איזון בין האיכות לבין קצב העברת הנתונים לאורך זמן, במסגרת המגבלות על קצב העברת הנתונים
קצב העברת נתונים קבוע (CBR) ניסיון לשמור על קצב העברת נתונים יציב למדי בזמן שהאיכות משתנה

ק

תרשים מצב Q

מצב Companion קבוע הוא אפשרות טובה בתרחישים שבהם סוגיות הנוגעות לגודל הקובץ ולקצב העברת הנתונים תואמות לחלוטין לאיכות הסופית.

את תרחישי השימוש בהגדרות Q אפשר למצוא בקולנוע הדיגיטלי, בסוויטות העריכה הדיגיטליות או באפליקציות שילוט דיגיטלי שבהן ניתן להעביר את התוכן באמצעי אחסון פיזי או לזמן מוגבל ללא הגבלה – הרבה לפני התוכן שבו נעשה שימוש, ובתנאי שהפלט הרצוי צריך להיות באיכות הויזואלית הגבוהה ביותר.

אופטימיזציה של קצב העברת הנתונים במצב VP9 Q

מצב Constant Quantant נדרש. כפי שהשם שלו מציע, מצב Q מתמקד בשמירה על הקוונטור ברמת היעד והמירכאות, ומאפשר לכמת לקבוע את זרימת הנתונים שהוא רוצה לעבד. כל מה שהמשתמש צריך להגדיר הוא איכות היעד.

מידע נוסף על איכות היעד ממיקוד לעיבוד תמונה (לא מיקוד על קצב העברת נתונים) זמין במאמר קידוד בסיסי.

השתמשו בפרמטרים הבאים של שורת פקודה ב-FFmpeg לצורך אופטימיזציה של קצב העברת הנתונים במצב Q:

ffmpeg
-b:v 0 על ידי סימון קצב העברת הנתונים של הסרטון כ-0, אנו מגדירים באופן מפורש את מצב ה&Q;Q
-g <arg> הגדרת מרווח ל תמונות מפתח במסגרות (ברירת המחדל היא 240)
-crf <arg> מגדיר את רמת האיכות המקסימלית. הערכים החוקיים הם 0–63. מספרים נמוכים יותר באיכות גבוהה יותר
-quality good -speed 0 ברירת המחדל ומומלץ עבור רוב האפליקציות. best הוא יותר כלי מחקר, עם שיפור שולי בהשוואה ל--quality good -speed 0
-lossless מצב ללא אובדן

קצב העברת נתונים במצב Q : דוגמאות ל-FFmpeg

הדוגמה הראשונה היא הגדרה קיצונית של מצב 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. לכן, היינו מקבלים את אותה תוצאה בלי לכלול את הפרמטר השני באחת משלוש הדוגמאות:

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.8MB, ו--crf מוגדר ל-10 גודל הקובץ הוא 125.3MB, והערך שהוגדר ל--crf הוא 63 4.5MB. במונחים פשוטים מאוד, אנחנו מבליטים את האיכות של הקובץ בקידוד 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.9MB. אנחנו משווים את ההגדרה הזו ל--g 240 (צריך להגדיר בדיוק את אותו דבר עם ברירת המחדל) כשאנחנו מגיעים לקובץ עם 4.5MB, וגם ל--g 480 שבסופו של דבר אנחנו מגיעים עם קובץ בגודל 4.4MB.

בקרת איכות

CQ הוא מצב מומלץ לסרטונים מבוססי קבצים.

תרשים של מצב הרבעון הנוכחי

ברוב סוגי התוכן מומלץ להשתמש במצב 'איכות מוגבלת' (CQ) עם מכסות של קצב העברת נתונים. רוב הסרטונים מכילים שילוב של סצנות עם תנועה גבוהה (למשל: רצפים של פעולות) וסצנות עם פחות פרטים (למשל שיחות). מצב CQ מאפשר למקודד לשמור על רמת איכות סבירה במהלך סצנות ארוכות יותר ופשוטות יותר (ללא בזבוז סיביות), ובמקביל להקצות עוד ביטים לרצפים קשים.

עם זאת, אנחנו עדיין צריכים להגביל את התהליך על ידי ציון טווח עליון -- אחרת, ייתכן בכלל שלא תהיה דחיסה! ניתן גם להגדיר טווח נמוך יותר, שבו גם אם התמונה היא שחורה, תהליך הקידוד כמעט לא יכול לעשות דבר, אנחנו עשויים להפחית את היעילות של הנתונים, אולי אפילו פחות ביעילות, אבל בסופו של דבר גם אם השחור לא יהיה עמוס במיוחד וייראה ככה.

בנוסף, עלינו להגדיר את הסף כמותי. ב-VP9, הסף לחיוב כמות יכול לנוע מ-0 עד 63.

הפרמטרים הבאים של שורת פקודה של FFmpeg משמשים למצב CQ:
ffmpeg
-b:v <arg> מגדיר את קצב העברת הנתונים של היעד (למשל, 500k)
-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.2MB בדיסק – קטן בהרבה מהקוד של מצב ה-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.1MB, ובפעמים של מורכבות ותנועה גבוהות ניתן לראות בבירור את איכות הסרטון בהשוואה בדוגמה הקודמת.

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.2MB בדיסק.

VBR

מצב קצב העברת נתונים משתנה (VBR) מומלץ לסטרימינג של קבצים על פי דרישה, בעלי תוכן וידאו בהילוך מהיר (לדוגמה, ספורט). הוא מתאים במיוחד למשלוח מבוסס-HTTP.

תרשים מצב VBR

במודל VBR, סצנות הפעולה עשויות להיות מקודדות בקצב העברת נתונים גבוה יותר מ "קלים" סצנות שמותאמות למסגרת המפתח.

במודלים של וידאו בסטרימינג גדולים, יתרונות של VBR יכולים להצטבר באופן משמעותי בתנאים של הפצה ותשתית. כאשר שידורי VBR רבים מסופקים על ידי אותה תשתית, הדבר יכול לספק יתרונות לכל הצופים שמשתמשים במערכת.

VP9 VBR מומלץ גם לקידוד של ספורט ותוכן אחר עם תנועה רבה. בתוכן כזה, מורכב יותר, VBR מניב איכות גבוהה יותר במהלך תקופות של תנועה נמוכה יותר.

הפרמטרים הבאים של שורת פקודה של FFmpeg משמשים במצב VBR:
ffmpeg
-quality good אם שדה זה נמצא, ההגדרה FFmpeg מביאה בחשבון את ההגדרה הבאה של -speed
-speed <arg> עבור ערכים חוקיים של מודעות וידאו מסוג 0 – 4 הוא 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 דוגמאות

בדוגמאות הבאות מוסבר איך להגדיר את קצב העברת הנתונים ליעד של 2Mbps ו-500kbps:

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, לפי המפרט הבא:

  • מעבד: 4x Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
  • זיכרון (RAM): 8,060MB (1492MB)
  • גרפיקה: Intel HD Graphics 530 (Skylake GT2)
  • מערכת הפעלה: Ubuntu 16.04 LTS

קובץ המקור בכל המקרים היה קליפ באורך דקה, 22 שניות (1:20) נאסף מדמעות פלדה.

קובץ קידוד דקות גודל הקובץ בדיסק
Q_g_1_crf_0_120s_tears_of_teel_1080p.webm 81 1.06GB
Q_crf_0_120s_tears_of_teel_1080p.webm 131 711.8MB
Q_crf_10_120s_tears_of_teel_1080p.webm 118 125.3MB
Q_crf_63_120s_tears_of_teel_1080p.webm 27 4.5MB
Q_g_1_120s_tears_of_teel_1080p.webm 51 25.9MB
Q_g_240_120s_tears_of_teel_1080p.webm 28 4.5MB
Q_g_480_120s_tears_of_teel_1080p.webm 10 4.4MB
CQ_4000_1000_crf_10_120s_tears_of_teel_1080p.webm 11 20.2MB
CQ_2500_1500_crf_10_120s_tears_of_teel_1080p.webm 9 24.1MB
CQ_1400_750_crf_10_120s_tears_of_teel_1080p.webm 50 13.2MB
VBR_good_0_120s_tears_of_teel_1080p.webm 3 23.4MB
VBR_good_5_120s_tears_of_teel_1080p.webm 4 23.9MB
VBR_good_8_120s_tears_of_teel_1080p.webm 1 23.9MB
CBR_2000_realtime_speed_0_120s_tears_of_teel_1080p.webm 98 21MB
CBR_2000_realtime_speed_5_120s_tears_of_teel_1080p.webm 2 24.8MB
CBR_2000_realtime_speed_8_120s_tears_of_teel_1080p.webm 1 21MB
CBR_500_realtime_speed_0_120s_tears_of_teel_1080p.webm 73 6.2MB
CBR_500_realtime_speed_5_120s_tears_of_teel_1080p.webm 1 8.5MB
CBR_500_realtime_speed_8_120s_tears_of_teel_1080p.webm 1 7.1MB

ניתן היה לראות שהגדרת -speed מעל 5 משנה את מהירות העיבוד של VP9. עלייה זו היא משמעותית בכמות גדולה (ניתן לראות זאת על ידי ההשפעה החזקה מאוד על & קצבי העברת הנתונים במהירות הנמוכה מאוד), אך VP9 עדיין יכול להפיק קצב העברת נתונים נמוך מאוד של 1080p, אך מתאים יותר למכשירים ניידים קטנים יותר מאשר מסכים גדולים.

שיקולים בנוגע למקרי שימוש עם שינוי גודל (שינוי גודל)

מצבי קצב העברת הנתונים של VP9' כמובן שאינם מבודדים, ועשויים להיות משולבים עם ארגומנטים ופרמטרים רבים אחרים כדי לטרגט תרחישי שימוש ספציפיים. אחד השימושים הטיפוסיים במצב הזה הוא להגדיל את קנה המידה של מאפייני הפלט של הסרטון, כך שיטרגטו מכשיר ספציפי.

דוגמה קלאסית לכך היא שינוי זרם HD לפלט SD. שוב יהיו לכך השפעה משמעותית על זמן העיבוד ועל קצב הפלט. בתרחיש שבו שתי פקודות FFmpeg זהות, למעשה, שינוי הגודל של סרטון הפלט ישנה את הגודל של הקובץ שמתקבל, ואת קצב העברת הנתונים שלו במודל של סטרימינג.

לדוגמה, לקחנו דוגמה של נקודת אמצע מכל אחד ממצבי הקצב והוספנו הוספה של פרמטרים לשינוי גודל.

מצב 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_teel_1080p.webm 5 3.4MB
640x480_CQ_crf_0_120s_tears_of_teel_1080p.webm 2 22.4MB
640x480_VBR_good_5_120s_tears_of_teel_1080p.webm 1 22.6MB
640x480_CBR_2000_realtime_5_120s_tears_of_teel_1080p.webm 4 23MB

לשם השוואה, אלה פקודות FFmpeg מהדוגמאות הקודמות שלנו אך ללא ההגדלה:

קובץ קידוד דקות גודל הקובץ בדיסק
Q_crf_10_120s_tears_of_teel_1080p.webm 56 126MB
CQ_2500_1500_crf_10_120s_tears_of_teel_1080p.webm 9 24.1MB
VBR_good_5_120s_tears_of_teel_1080p.webm 4 23.9MB
CBR_2000_realtime_speed_5_120s_tears_of_teel_1080p.webm 1 24.8MB

כפי שאפשר לראות, יש ירידה משמעותית בגודל קובצי הפלט של כל אחד מהם, וברוב המקרים יש ירידה בזמן הקידוד, במצב Q, זמן הקידוד אכן גדל. דחיסת הסרטון "עוד" מצריכה מאמץ נוסף, גם אם קובץ הפלט צפוי להיות קטן יותר אם אין הגבלה על האיכות (כפי שהוא במצב Q), ייתכן שהפעולה הזו תגביר את הזמן הנדרש ליצירת קובץ הפלט. אל תניחו שקובץ קטן יותר יכול תמיד לעבור מהר יותר על ידי תהליך הקידוד.

הרחבה מחדש וגם הפחתת קצב העברת הנתונים בשילוב של

דוגמה אחרונה: הדוגמאות הבאות מתבססות מחדש על CQ, VBR ו-CBR כדי להרחיב את היקף החשיפה, אבל הפעם אנו מגבילים את קצב העברת הנתונים של היעד לרמה של 500kbps – בערך רבע (בהתאמה לגודל של התמונה).

מצב 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_teel_1080p.webm 1 7MB
640x480_VBR_500_good_5_120s_tears_of_teel_1080p.webm 1 7MB
640x480_CBR_500_realtime_5_120s_tears_of_teel_1080p.webm 1 7.6MB

כפי שאפשר לראות, זמן הקידוד קוצר יותר.