הגדרות מומלצות
בקטע הזה מפורטות המלצות לקידוד 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 הן:
- רמת CQ של 36 (ראו איור 2ב)
- קצב העברת נתונים יעד של 276kbps (ראו איור 2א)
- קצב העברת נתונים מינימלי מותר של 138kbps (50% מהיעד)
- קצב העברת הנתונים המקסימלי המותר הוא 414kbps (150% מהיעד)
- הריווח המקסימלי בין תמונות המפתח הוא 240 שניות
- פרופיל 'בינוני' עם שני מעברים
כך מקבלים את הפרמטרים הבאים של שורת הפקודה עבור 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א.
בקידוד בשידור חי, אנחנו רוצים גם למקסם את השרשור. כדי לעשות את זה:
- לאפשר ל-VP9 לפצל את הסרטון לעמודות (שרוחבן צריך להיות 256 פיקסלים לפחות, וחייב להיות חזקה של שתיים);
- הוראה ל-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 הן:
- CBR, קצב העברת נתונים יעד של 386kbps (ראו איור 2א)
- 2 עמודות של משבצות (ראו איור 2ד)
- 4 שרשורים (ראו איור 2ד)
- ביצועים בזמן אמת
- אין זמן אחזור בגלל מסגרות חלופיות (אין השהיה של מסגרות)
כך מקבלים את הפרמטרים הבאים של שורת הפקודה עבור 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