הגדרות מומלצות ל-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
קידוד ברזולוציה גבוהה
אם אתם מתכננים לטרגט מספר רזולוציות, או אם לרשת המסירה יש רוחב פס משתנה, מומלץ ליצור כמה רזולוציות. לאחר מכן הנגן יוכל לקבוע איזו רזולוציה תישלח אל הצופה.
קידודים ברזולוציה גבוהה של סרטון משמשים לעתים קרובות בסטרימינג מותאם של קצב העברת נתונים, שבו נגן הווידאו עובר בין רזולוציות בזמן אמת בהתאם לרוחב הפס של המשתמש. לדוגמה, Shake Player מאפשר להפעיל מקודדים ברזולוציה גבוהה, כאשר כל קידוד של VP9 נמצא בקובץ נפרד ומניפסט DASH מספק מידע על כל קידוד.
למידע נוסף על אריזת וידאו בפורמטים מותאמים של סטרימינג, אפשר לעיין בחבילה של Shaka ,. המדריך הזה יתמקד בהגדרות הקידוד של VP9 במספר רזולוציות.
הגדרות מומלצות
ניתן להשתמש בכל ההגדרות הבאות לקבצים בודדים ברזולוציות שונות, ומשולבות בהן סט מקיף שמתאים לסטרימינג מותאם אישית. הערה לגרסה 640x480 יש שתי גרסאות: אחת באיכות נמוכה (LQ) והשנייה באיכות בינונית (MQ).
קצב העברת נתונים
מצב 'איכות מוגבלת' (CQ) מומלץ בעת קידוד קובצי VP9 לצפייה על פי דרישה. מצב הקידוד הזה מאפשר לציין יעד של קצב העברת נתונים ממוצע, ובמקביל לשלוט באיכות הסרטון וכן בקצב העברת הנתונים המינימלי והמקסימלי.
קצבי העברת הנתונים הבאים מוצעים כבסיסי הפצה לאינטרנט ולניידים. ההצעות האלה מצמצמות את קצב העברת הנתונים ולשפר את איכות הווידאו שמתאימה להפצת צרכנים באינטרנט ובנייד. כדאי לחשוב עליהן כהמלצות על &קצב העברת נתונים של 39; נמוך' שעדיין יכולות להשיג איכות סבירה.
בדוגמאות שלמעלה, מומלץ להגדיר קצב העברת נתונים מינימלי של 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 | 1800 | 900 | 2610 |
1920x1080p ב-24,25,30 | 1800 | 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 |
ב-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 פיקסלים לפחות, כך שיש מגבלה על מספר האריחים שבהם ניתן להשתמש.
בהתאם למספר האריחים ולרזולוציה של מסגרת הפלט, ייתכן שיהיו יותר שרשורים של מעבד המידע. באופן כללי, יש ערך מוגבל לשרשורים מרובים כאשר גודל מסגרת הפלט קטן מאוד.
ההגדרות הבאות מומלצות לאריחים ולשרשור ברזולוציות שונות.
גודל המסגרת | מספר עמודות המשבצות | מספר השרשורים |
---|---|---|
320x240 | 1 (-tile-columns 0 ) |
2 |
6,40x360 | 2 (-tile-columns 1 ) |
4 |
640x480 | 2 (-tile-columns 1 ) |
4 |
1,280x720 | 4 (-tile-columns 2 ) |
8 |
1920x1080 | 4 (-tile-columns 2 ) |
8 |
2,560x1,440 | 8 (-tile-columns 3 ) |
16 |
3,840x2,160 | 8 (-tile-columns 3 ) |
16 |
ב-FFmpeg, מספר המשבצות נשלט באמצעות הפרמטר -tile-columns
ומספר השרשורים לפי -threads
. לדוגמה, קידוד 640x480 משתמש
בשורת הפקודה -tile-columns 2 -threads 4
.
שורת הפקודה של FFmpeg
כשמשלבים את ההמלצות שלמעלה, אפשר להשתמש בפקודות FFmpeg כדי לקודד תוכן בפורמט VP9.
שימו לב שהפקודות של כניסה ראשונה ושל מעבר שני מקובצות יחד. הארגומנט
-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 2 \ -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 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ הפלט: tos-320x240.webm (320x240, 21.73MB)
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 4 \
-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 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x360.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ פלט: 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 4 \
-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 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-low.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ פלט: tos-640x480-low.webm (640x480, 51.18MB)
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 4 \
-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 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-medium.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ פלט: 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 8 \
-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 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1280x720-24-30fps.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ פלט: tos-1280x720-24-30fps.webm (1280x720, 98.2MB)
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 8 \
-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 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4-y tos-1280x720-50-60fps.webm
- קובץ קלט: tears_of_stel_1080p.webm (1920x800, 544.88MB)
- קובץ פלט: tos-1280x720-50-60fps.webm (1280x720, 157.1MB)
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 8 \
-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 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: tos-1920x1080-24-30fps.webm (1920x1080, 151.51MB)
1920x1080 (50 או 60 מסגרות לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
-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 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: tos-1920x1080-50-60fps.webm (1920x1080, 238.18MB)
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 16 \
-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 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: tos-2560x1440-24-30fps.webm 2560x1440, 533.54MB)
2,560x1,440 (50 או 60 מסגרות לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-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 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: 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 24 \
-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 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: tos-3840x2160-24-30fps.webm 3840x2160, 1.03GB
3840x2160 (50 או 60 מסגרות לשנייה)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-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 24 \
-quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- קובץ קלט: tearsofstel_4k.mov (3840x1714, 6.76GB)
- קובץ פלט: tos-3840x2160-50-60fps.webm 3840x2160, 1.56GB)