בקטע הזה מפורטות המלצות לקידוד VP9 למגוון פרופילים נפוצים:

  • סרטון שעבר אופטימיזציה גבוהה לאינטרנט ולניידים (VOD)
  • הפצת תוכן פרימיום (VOD)
  • ספורט, אנימציה, תוכן באיכות 10 ביט (VOD)
  • קידוד חי
  • WebRTC

מבוא

כשמקודדים סרטון, יש כמה דברים שצריך לקחת בחשבון:

  • האם אתם יוצרים גרסה אחת של המדיה, או כמה גרסאות בקצבי העברת נתונים וברזולוציות שונות?
  • האם אתם יוצרים שידור חי או קבצים של סרטונים לפי דרישה?
  • איזה סוג מדיה אתה מקודד – יש בה הרבה תנועה? פרטים? אנימציה?
  • האם אתם מקודדים לאיכות מקסימלית (למשל, תוכן פרימיום) או למהירות (למשל, ועידות באינטרנט)?

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

הגדרות בסיסיות

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

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

הצעות לקצבי העברת נתונים (Bitrate)

גודל/קצב הפריימים קצב העברת נתונים ממוצע (VOD, ‏ kbps) קצב העברת נתונים ממוצע (שידור חי, kbps)
‫320x240p @ 24,25,30 150 250
‫640x360p @ 24,25,30 276 386
‫640x480p @ 24,25,30 ‫512 (LQ), ‏ 750 (MQ) ‫720 (LQ), ‏ 1024 (MQ)
‫‎1280x720p @ 24,25,30 1024 1440
‫‎1280x720p @ 50,60 1,800 2,500
‫1920x1080p @ 24,25,30 1,800 2,500
‫1920x1080p @ 50,60 3000 4,200
‫2560x1440p @ 24,25,30 6000 8400
‫2560x1440p @ 50,60 9000 12600
3840x2160p @ 24,25,30 12000 16800
3840x2160p @ 50,60 18000 25200

איור 2א: קצבי העברת נתונים (Bitrate) של היעד

הגדרות קידוד של VOD

הגדרות לרוב סוגי התוכן

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

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

הגדרות מקודד לקידוד CQ

גובה המסגרת איכות היעד (CQ) מצב קידוד
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 ‫34 (איכות נמוכה) או 33 (איכות בינונית) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

איור 2ב: הגדרות מומלצות של CQ

בנוסף, מומלץ להשתמש ב-240 פריימים של וידאו בין פריימים מרכזיים (בתוכן של 30fps, זה שווה ל-8 שניות). פריימים מרכזיים הם פריימים של סרטון שמספיקים לעצמם, כלומר לא מסתמכים על פריימים אחרים כדי לעבור רינדור (הסבר מפורט יותר מופיע במאמר בנושא מבנה GOP). להפעלה באינטרנט ובנייד, אנחנו מאפשרים מרווחים גדולים בין מסגרות מפתח, כי כך המקודד יכול לבחור את המיקום ה 'הטוב ביותר' של מסגרות המפתח כדי למקסם את האיכות.

פרמטרים לדוגמה של שורת פקודה: סרטון בגודל 640x360

מהטבלה שלמעלה, ההמלצות לסרטון באיכות 360p הן:

  1. רמת CQ של 36 (ראו איור 2ב)
  2. קצב העברת נתונים יעד של ‎276kbps (ראו איור 2א)
  3. קצב העברת נתונים מינימלי מותר של 138kbps (50% מהיעד)
  4. קצב העברת הנתונים המקסימלי המותר הוא 414kbps (150% מהיעד)
  5. הריווח המקסימלי בין תמונות המפתח הוא 240 שניות
  6. פרופיל 'בינוני' עם שני מעברים

כך מקבלים את הפרמטרים הבאים של שורת הפקודה עבור libvpx ו-FFmpeg:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

הגדרות תוכן Premium

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

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

מצבי קידוד של תוכן פרימיום ופרמטרים של שורת פקודה

גובה המסגרת מצב קידוד libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

איור 2ג: מצבי קידוד של תוכן פרימיום

הגדרות של תוכן עם תנועה רבה, כמו ספורט

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

בשורת הפקודה, ההבדל העיקרי בין מצב QP למצב VBR הוא שלא מציינים רמת CQ. אחרת, ההגדרות המומלצות זהות.

דוגמה לפרמטרים של שורת פקודה של VBR: סרטון באיכות 640x360

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

הגדרות של אנימציה וגיימינג

הגדרות של תוכן באיכות נמוכה או עם רעשי רקע

בתוכן עם רעשי רקע, מומלץ להגדיל את המספר והעוצמה של מסגרות alt-ref. פריימים חלופיים הם פריימים 'בלתי נראים', שלא מוצגים למשתמש, אבל משמשים כהפניה כשיוצרים את הפריימים הסופיים (מידע נוסף זמין כאן).

מומלץ להשתמש בפרמטרים הבאים כדי להנחות את VP9 להשתמש ביותר מסגרות alt-ref:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

קידוד 10 ביט/HDR

לקידוד של 10 ביט, מומלץ להשתמש ב-VP9 Profile 2. קידוד ב-10 ביט לא דורש יותר ביטים, ולכן שאר הפרמטרים זהים:

libvpx

--profile=2

FFmpeg

-profile 2

הגדרות קידוד של שידורים חיים

סטרימינג בשידור חי

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

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

  1. לאפשר ל-VP9 לפצל את הסרטון לעמודות (שרוחבן צריך להיות 256 פיקסלים לפחות, וחייב להיות חזקה של שתיים);
  2. הוראה ל-VP9 להשתמש ביותר כוח עיבוד. בטבלה הבאה מפורטות המלצות לכל רזולוציה.

המלצות לגבי חלוקה למשבצות ושימוש בשרשורים

הגדרות מקודד לקידוד CQ
גודל המסגרת מספר העמודות של האריחים מספר השרשורים
320x240 1 2
‫640x360 2 4
640x480 2 4
‫1280x720 4 8
‫1920x1080 4 8
2560x1440 8 16
‫3840x2160 8 16

איור 2ד. המלצות לקידוד בשידור חי: חלוקה למקטעים ושימוש בשרשורים

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

מכאן, ההמלצות לשידור חי של סרטון באיכות 360p הן:

  1. ‫CBR, קצב העברת נתונים יעד של 386kbps (ראו איור 2א)
  2. 2 עמודות של משבצות (ראו איור 2ד)
  3. ‫4 שרשורים (ראו איור 2ד)
  4. ביצועים בזמן אמת
  5. אין זמן אחזור בגלל מסגרות חלופיות (אין השהיה של מסגרות)

כך מקבלים את הפרמטרים הבאים של שורת הפקודה עבור libvpx ו-FFmpeg:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

קידוד VP9 בשידור חי ל-DASH/YouTube

קידוד WebRTC