הגדרות מומלצות לתוכן וידאו על פי דרישה (VOD)
מטרה
בקטע הזה מפורטות המלצות להגדרות קידוד VP9 כשמבצעים קידוד מבוסס-קבצים (כלומר לא בשידור חי).
ההמלצות האלה מיועדות ליעדים הבאים:
- איזון בין איכות לבין מהירות קידוד
- קצב הביטים המינימלי להשגת איכות סבירה
- הגדרות שמתאימות למגוון רחב של סוגי תוכן
ההמלצות האלה לא:
- כתובת לקידוד בשידור חי
- אופטימיזציה לסוגים ספציפיים של תוכן (למשל, צילומי ספורט עם תנועה רבה)
- קביעת הגדרות לדרישות ספציפיות של מכשיר או רשת
קידוד ברזולוציה אחת
פורמט VP9 תומך במגוון גדלים של מסגרות, מרזולוציות קטנות ועד 4K. גודל מסגרת גדול יותר מאפשר איכות גבוהה יותר, אבל הוא דורש יותר רוחב פס כדי להעביר אותו ויותר כוח עיבוד כדי לפענח אותו.
אם אתם יוצרים רזולוציה אחת, 640x480 היא בחירה בטוחה למגוון רחב של מכשירים ניידים ומכשירי אינטרנט. הפרמטרים הבאים של שורת הפקודה FFmpeg מאפשרים ליצור קובץ ברזולוציה אחת בקצב של 750kbps.
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
קידוד ברזולוציות שונות
אם אתם מתכננים לטרגט כמה רזולוציות, או אם רוחב הפס ברשת המסירה שלכם משתנה, מומלץ ליצור כמה רזולוציות. הנגן יכול לשלוט ברזולוציה שנשלחת לצופה.
קידודים של סרטונים ברזולוציות שונות משמשים לעיתים קרובות בהזרמת קצב סיביות אדפטיבי, שבה נגן הווידאו עובר בין רזולוציות בזמן אמת על סמך רוחב הפס של המשתמש. לדוגמה, Shaka Player מאפשר הפעלה של קידודים ברזולוציות שונות, כשכל קידוד VP9 נמצא בקובץ נפרד ומניפסט DASH מספק מידע על כל קידוד.
למידע נוסף על אריזת סרטונים בפורמטים של סטרימינג אדפטיבי, אפשר לעיין בShaka Packager. המדריך הזה מתמקד בהגדרות הקידוד של VP9 ברזולוציות שונות.
הגדרות מומלצות
אפשר להשתמש בכל ההגדרות שבהמשך לקבצים בודדים ברזולוציות שונות. ביחד הן מספקות קבוצה מקיפה שמתאימה להעברה אדפטיבית בסטרימינג. הערה לגרסה 640x480 יש שתי גרסאות, אחת באיכות נמוכה (LQ) והשנייה באיכות בינונית (MQ).
קצב העברת נתונים
מומלץ להשתמש במצב איכות מוגבלת (CQ) כשמבצעים קידוד של קובצי VP9 לצפייה לפי דרישה. מצב הקידוד הזה מאפשר לכם לציין קצב העברת נתונים ממוצע, תוך שליטה באיכות המקסימלית של הסרטון וגם בקצב העברת הנתונים המינימלי והמקסימלי.
קצבי העברת הנתונים הבאים מוצעים כנקודות התחלה להפצה באינטרנט ובנייד. ההצעות האלה ממזערות את קצב העברת הנתונים, תוך שמירה על איכות הווידאו שמתאימה להפצה באינטרנט ובנייד לצרכנים. אפשר לחשוב עליהן כהמלצה לקצב העברת נתונים 'נמוך' שעדיין מאפשר להשיג איכות סבירה.
בדוגמאות שלמעלה, מומלץ להגדיר את קצב העברת הנתונים המינימלי ל-50% מקצב העברת הנתונים הרצוי, ואת קצב העברת הנתונים המקסימלי ל-145% מקצב העברת הנתונים הרצוי.
גודל הפריימים/קצב הפריימים | קצב העברת נתונים (VOD, kbps) | קצב העברת נתונים מינימלי (50%) | קצב העברת נתונים מקסימלי (145%) |
---|---|---|---|
320x240p @ 24,25,30 | 150 | 75 | 218 |
640x360p @ 24,25,30 | 276 | 138 | 400 |
640x480p @ 24,25,30 | 512 (LQ), 750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280x720p @ 24,25,30 | 1024 | 512 | 1485 |
1280x720p @ 50,60 | 1,800 | 900 | 2610 |
1920x1080p @ 24,25,30 | 1,800 | 900 | 2610 |
1920x1080p @ 50,60 | 3000 | 1500 | 4350 |
2560x1440p @ 24,25,30 | 6000 | 3000 | 8700 |
2560x1440p @ 50,60 | 9000 | 4500 | 13050 |
3840x2160p @ 24,25,30 | 12000 | 6000 | 17400 |
3840x2160p @ 50,60 | 18000 | 9000 | 26100 |
איור 2א: קצבים מומלצים להעברת נתוני VOD
ב-FFmpeg, קצב העברת הנתונים נשלט באמצעות הפקודות הבאות:
FFmpeg | |
---|---|
-b:v <arg> |
הגדרת קצב העברת נתונים (למשל, 500k) |
-minrate <arg> -maxrate <arg> |
הגדרת קצב העברת נתונים מינימלי ומקסימלי. |
לדוגמה, כשמקודדים תוכן בגודל 640x480, אפשר להשתמש בשורת הפקודה -b:v 750k -minrate 375 -maxrate 1088
.
איכות
במצב CQ, מגדירים גם את רמת האיכות המקסימלית. אלה רמות האיכות המומלצות לקידוד VP9 מבוסס-קבצים:
גובה המסגרת | איכות היעד (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) או 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
ב-FFmpeg, איכות מוגדרת באמצעות הפקודה -crf
. לדוגמה, כדי להגדיר את האיכות ל-33, משתמשים בפקודה -crf 33
קידוד רב-מעברי ומהירות קידוד
קידוד מבוסס-קובץ מאפשר גמישות במהירות. אפשר גם להריץ כמה מעברים על אותו חומר כדי לשפר את האיכות, ולבחור מהירויות לכל אחד מהם.
כשמקודדים קובצי VP9 ב-FFmpeg, מומלץ להגדיר את הפרמטר -quality
לערך good
ואז להגדיר את המהירות של המעבר הראשון והשני בהתאם לטבלה שבהמשך באמצעות הפרמטר -speed
. כך מתקבל איזון טוב בין זמן הקידוד לבין איכות הפלט.
גובה המסגרת | מהירות (העברה ראשונה) | מהירות (מעבר שני) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
לדוגמה, מחרוזת קידוד של מעבר ראשון ב-FFmpeg עשויה לכלול את הערך
-quality good -speed 4
.
הרווח בין תמונות מפתח
מומלץ לאפשר עד 240 פריימים של סרטון בין פריימים מרכזיים (8 שניות לתוכן של 30fps). פריימים מרכזיים הם פריימים של סרטונים שמספיקים לעצמם. הם לא מסתמכים על פריימים אחרים כדי לעבד את עצמם, אבל הם בדרך כלל גדולים יותר מסוגים אחרים של פריימים. בהפעלה באינטרנט ובנייד, מרווחים גדולים בין מסגרות מפתח מאפשרים למקודד לבחור את המיקום הטוב ביותר של מסגרות המפתח כדי למקסם את האיכות.
ב-FFmpeg, המרווח בין תמונות המפתח נשלט באמצעות הפקודה -g
, שמציינת את מספר הפריימים. ל-240 פריימים, הערך יהיה -g 240
.
המלצות לגבי חלוקה למשבצות ושימוש בשרשורים
הפסיפס מפצל את מסגרת הסרטון לכמה עמודות, מה שמפחית מעט את האיכות אבל משפר את מהירות הביצועים של הקידוד. הרוחב של כל משבצת צריך להיות לפחות 256 פיקסלים, ולכן יש מגבלה על מספר המשבצות שאפשר להשתמש בהן.
יכול להיות שיהיה שימוש ביותר ליבות CPU, בהתאם למספר המשבצות ולרזולוציה של מסגרת הפלט. באופן כללי, אין הרבה ערך לשימוש במספר שרשורים כשגודל פלט הפריימים קטן מאוד.
ההגדרות הבאות מומלצות לשימוש בטכניקות של חלוקה למשבצות וריבוי נימים ברזולוציות שונות.
גודל המסגרת | מספר העמודות של האריחים | מספר השרשורים |
---|---|---|
320x240 | 1 (-tile-columns 0 ) |
1 |
640x360 | 2 (-tile-columns 1 ) |
2 |
640x480 | 2 (-tile-columns 1 ) |
2 |
1280x720 | 4 (-tile-columns 2 ) |
4 |
1920x1080 | 4 (-tile-columns 2 ) |
4 |
2560x1440 | 8 (-tile-columns 3 ) |
8 |
3840x2160 | 8 (-tile-columns 3 ) |
8 |
ב-FFmpeg, מספר המשבצות נשלט באמצעות הפרמטר -tile-columns
ומספר השרשורים באמצעות -threads
. לדוגמה, קידוד של 640x480 יתבצע באמצעות שורת הפקודה -tile-columns 1 -threads 2
.
שורות פקודה של FFmpeg
כדי לקודד תוכן VP9, אפשר להשתמש בפקודות FFmpeg הבאות, שמבוססות על ההמלצות שלמעלה.
שימו לב שהפקודות של המעבר הראשון והמעבר השני משורשרות יחד. הארגומנט -y
בפקודה של המעבר השני עונה 'כן' כש-FFmpeg מבקשת להחליף את קובץ הסטטיסטיקות של המעבר הראשון בסרטון הפלט.
חשוב גם לציין שמקור 1080p משמש לקידודים שמטרגטים פלט של עד 1280x720. מקור 4K משמש לפלט גדול יותר.
320x240 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 1 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 1 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ פלט: tos-320x240.webm (320x240, 21.73 MB)
640x360 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x360.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ הפלט: tos-640x360.webm (640x360, 31.53MB)
640x480 (איכות נמוכה, 24, 25 או 30 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x480-low.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ הפלט: tos-640x480-low.webm (640x480, 51.18 MB)
640x480 (איכות בינונית, 24, 25 או 30 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x480-medium.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ הפלט: tos-640x480-medium.webm (640x480, 69.27MB)
1280x720 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1280x720-24-30fps.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ הפלט: tos-1280x720-24-30fps.webm (1280x720, 98.2 MB)
1280x720 (50 או 60 פריימים לשנייה)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2-y tos-1280x720-50-60fps.webm
- קובץ קלט: tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- קובץ פלט: tos-1280x720-50-60fps.webm (1280x720, 157.1 MB)
1920x1080 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1920x1080-24-30fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-1920x1080-24-30fps.webm (1920x1080, 151.51 MB)
1920x1080 (50 או 60 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1920x1080-50-60fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-1920x1080-50-60fps.webm (1920x1080, 238.18 MB)
2560x1440 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-2560x1440-24-30fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-2560x1440-24-30fps.webm 2560x1440, 533.54 MB)
2560x1440 (50 או 60 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-2560x1440-50-60fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-2560x1440-50-60fps.webm 2560x1440, 664.04MB)
3840x2160 (24, 25 או 30 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-3840x2160-24-30fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-3840x2160-24-30fps.webm 3840x2160, 1.03 GB)
3840x2160 (50 או 60 פריימים לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 8 \
-quality good -speed 2 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- קובץ קלט: tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- קובץ הפלט: tos-3840x2160-50-60fps.webm 3840x2160, 1.56 GB)