تنظیمات توصیه شده برای VOD
هدف
این بخش توصیه هایی را برای تنظیمات کد VP9 هنگام انجام رمزگذاری مبتنی بر فایل (یعنی غیر زنده) ارائه می دهد.
این توصیه ها برای اهداف زیر طراحی شده اند:
- تعادل بین کیفیت و سرعت رمزگذاری
- حداقل نرخ بیت برای دستیابی به کیفیت معقول
- تنظیماتی برای گنجاندن طیف وسیعی از انواع محتوا
این توصیه ها انجام نمی دهند:
- کدگذاری زنده آدرس
- بهینه سازی برای انواع محتوای خاص (مانند فیلم های ورزشی با حرکت بالا)
- تنظیمات را برای دستگاه یا شبکه مورد نیاز خاص پیکربندی کنید
رمزگذاری تک رزولوشن
VP9 از طیف وسیعی از اندازههای فریم، از رزولوشنهای کوچک تا 4K پشتیبانی میکند. اندازههای فریم بزرگتر کیفیت بالاتری را ارائه میکنند، اما به پهنای باند بیشتری برای ارائه و قدرت پردازش بیشتری برای رمزگشایی نیاز دارند.
اگر یک رزولوشن واحد ایجاد می کنید، 640x480 یک شرط مطمئن برای طیف گسترده ای از وب و دستگاه های تلفن همراه است. پارامترهای خط فرمان FFmpeg زیر به شما این امکان را می دهد که یک فایل با وضوح تک با سرعت 750 کیلوبیت در ثانیه ایجاد کنید.
-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 | 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 ثانیه برای محتوای 30 فریم در ثانیه). فریم های کلیدی فریم های ویدئویی هستند که خودکفا هستند. آنها برای رندر کردن به فریم دیگری متکی نیستند، اما نسبت به سایر انواع فریم بزرگتر هستند. برای پخش وب و موبایل، فاصله سخاوتمندانه بین فریمهای کلیدی به رمزگذار اجازه میدهد تا بهترین مکانگذاری فریمهای کلیدی را برای به حداکثر رساندن کیفیت انتخاب کند.
در FFmpeg فاصله فریم های کلیدی با دستور -g
کنترل می شود که تعداد فریم ها را نشان می دهد. برای 240 فریم این مقدار -g 240
است.
توصیه های کاشی کاری و نخ زنی
کاشی کاری فریم ویدیو را به چندین ستون تقسیم می کند که کمی کیفیت را کاهش می دهد اما عملکرد رمزگذاری را سرعت می بخشد. کاشی ها باید حداقل 256 پیکسل عرض داشته باشند، بنابراین محدودیتی برای تعداد کاشی هایی که می توان استفاده کرد وجود دارد.
بسته به تعداد کاشی ها و وضوح فریم خروجی، رشته های CPU بیشتری ممکن است مفید باشند. به طور کلی، زمانی که اندازه فریم خروجی بسیار کوچک است، مقدار محدودی برای رشته های متعدد وجود دارد.
تنظیمات زیر برای کاشی کاری و نخ با وضوح های مختلف توصیه می شود.
اندازه قاب | تعداد کاشی-ستون | تعداد رشته ها |
---|---|---|
320x240 | 1 ( -tile-columns 0 ) | 2 |
640x360 | 2 ( -tile-columns 1 ) | 4 |
640x480 | 2 ( -tile-columns 1 ) | 4 |
1280x720 | 4 ( -tile-columns 2 ) | 8 |
1920x1080 | 4 ( -tile-columns 2 ) | 8 |
2560x1440 | 8 ( -tile-columns 3 ) | 16 |
3840x2160 | 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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-320x240.webm (320x240، 21.73 مگابایت)
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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-640x360.webm (640x360, 31.53 مگابایت)
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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-640x480-low.webm (640x480، 51.18 مگابایت)
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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-640x480-medium.webm (640x480، 69.27 مگابایت)
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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-1280x720-24-30fps.webm (1280x720، 98.2 مگابایت)
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_steel_1080p.webm (1920x800، 544.88 مگابایت)
- فایل خروجی: tos-1280x720-50-60fps.webm (1280x720، 157.1 مگابایت)
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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-1920x1080-24-30fps.webm (1920x1080، 151.51 مگابایت)
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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-1920x1080-50-60fps.webm (1920x1080، 238.18 مگابایت)
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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-2560x1440-24-30fps.webm 2560x1440، 533.54 مگابایت)
2560x1440 (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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-2560x1440-50-60fps.webm 2560x1440، 664.04 مگابایت)
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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-3840x2160-24-30fps.webm 3840x2160, 1.03 گیگابایت)
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
- فایل ورودی: tearsofsteel_4k.mov (3840x1714، 6.76 گیگابایت)
- فایل خروجی: tos-3840x2160-50-60fps.webm 3840x2160, 1.56 گیگابایت)