حالت‌های میزان بیت VP9 در جزئیات

مقدمه

در حالی که ما جزئیات سطح بالا در مورد حالت‌های نرخ بیت در صفحات رمزگذاری اولیه خود ارائه می‌کنیم، آنها فقط به حالت CQ (کیفیت محدود) می‌پردازند.

این سند روش های عملی دیگری را توضیح می دهد که می توانید نرخ بیت VP9 را برای بهینه سازی برای سناریوهای مختلف تنظیم کنید. مثال‌های زیر از FFmpeg استفاده می‌کنند.

فشرده سازی

هدف فن آوری های فشرده سازی ویدئو مانند VP9 کاهش حجم داده های مورد نیاز برای انتقال تصویر و حس حرکت قابل درک به کاربران نهایی است.

یکی از تکنیک های کلیدی مورد استفاده برای دستیابی به این، کوانتیزه کردن است. کوانتایزر عناصر مختلف دیجیتالی تصویر را به صورت ریاضی ساده می کند. به عنوان مثال، ممکن است محدوده رنگ‌های مورد استفاده را کاهش دهد، و بیشتر ممکن است توابع ریاضی را روی داده‌ها انجام دهد تا فقدان وضوح خوب درک شده در محدوده رنگ کاهش‌یافته را "هموار" کند. چنین توابعی زیادی وجود دارد.

کوانتیزاسیون (یا "Q") به خوبی در مقاله ویکی‌پدیا مشخص شده است.

در VP9، کوانتیزاسیون بر روی ضرایب تبدیل انجام می شود. این امر با افزودن به رمزگذاری، میزان بیت مورد نیاز برای حفظ کیفیت درک شده را کاهش می دهد.

در نهایت وقتی کوانتیزاسیون بیشتری وجود دارد (عدد Q بالاتر)، جزئیات از بین می روند و کیفیت پایین تر است، اما داده های کمتری برای ذخیره سازی فریم مورد نیاز است. در بیشتر موارد، رمزگذار VP9 با تغییر Q در طول زمان، بسته به پیچیدگی هر فریم، به اهداف نرخ بیت خود می‌رسد.

از بهینه سازی موارد استفاده کنید

برای اینکه کاربر بتواند فشرده سازی VP9 را بر اساس نیازهای خاص خود تنظیم کند، می توان تعادل کیفیت و میزان بیت را در زمان فشرده سازی اولیه از طریق تعدادی رابط برنامه نویسی تنظیم کرد.

رمزگذار دارای یک مبادله کشویی بین سرعت، کیفیت و نرخ بیت است.

  • اگر کاربر روی کیفیت تمرکز دارد، باید یا برای زمان‌های رمزگذاری طولانی‌تر آماده شود یا منابع پردازشی سریع‌تر و فراوان‌تر را فراهم کند.

  • اگر کاربر روی اطمینان از کوچک بودن فایل کدگذاری شده VP9 خروجی تمرکز دارد و می تواند به سرعت تحویل داده شود، باید آماده باشد تا مدت زمان پردازش تصویر توسط کوانتایزر را کاهش دهد و این منجر به جزئیات کمتری می شود. کوانتایزر می تواند کار کند.

  • اگر کاربر صرفاً بر روی سرعت تحویل متمرکز باشد (مثلاً در یک پخش زنده اینترنتی یا یک کنفرانس ویدیویی دو طرفه)، کوانتیزاسیون ممکن است کاملاً تابع محدودیت‌های سرعت انتقال بایت‌های قابل استفاده از داده از طریق شبکه باشد (یعنی "بیت" ).

انتخاب صحیح برای هر مورد استفاده بسیار خاص خواهد بود. برای ساده‌تر کردن تنظیم این توازن در مورد استفاده شما، VP9 از پیکربندی ساده در چهار "حالت میزان بیت" پشتیبانی می‌کند.

حالت های میزان بیت VP9

اجازه دهید با نگاهی به حالت‌های اصلی نرخ بیت که VP9 پشتیبانی می‌کند، شروع کنیم:

حالت
کوانتایزر ثابت (Q) به شما امکان می دهد یک مقدار کوانتایزر ثابت را مشخص کنید. نرخ بیت متفاوت خواهد بود
کیفیت محدود (CQ) به شما امکان می دهد حداکثر سطح کیفیت را تنظیم کنید. کیفیت ممکن است در پارامترهای نرخ بیت متفاوت باشد
نرخ بیت متغیر (VBR) کیفیت و میزان بیت را در طول زمان با محدودیت های مربوط به میزان بیت متعادل می کند
نرخ بیت ثابت (CBR) تلاش برای ثابت نگه داشتن نرخ بیت نسبتاً ثابت در حالی که کیفیت متفاوت است

س

نمودار حالت Q

حالت کوانتایزر ثابت انتخاب خوبی برای سناریوهایی است که نگرانی در مورد اندازه فایل و نرخ بیت کاملاً تابع کیفیت نهایی است.

موارد استفاده برای تنظیمات Q را ممکن است در سینمای دیجیتال، مجموعه‌های ویرایش دیجیتال یا برنامه‌های ساینیج دیجیتال پیدا کنید، جایی که محتوا را می‌توان بر روی یک رسانه ذخیره‌سازی فیزیکی یا در مدت زمان نامحدود ارائه کرد - خیلی قبل از محتوای واقعی که استفاده می‌شود، و جایی که خروجی مورد نظر باید از بالاترین کیفیت بصری برخوردار باشد.

بهینه سازی نرخ بیت حالت VP9 Q

حالت کوانتایزر ثابت به حداقل پیکربندی نیاز دارد. همانطور که از نامش پیداست، حالت Q بر روی حفظ کوانتایزر در سطح "کیفیت" هدف متمرکز است و به کوانتایزر اجازه می دهد تا جریان داده ای را که می خواهد پردازش کند، تعیین کند. تنها چیزی که کاربر باید تعریف کند کیفیت هدف است.

اطلاعات بیشتری در مورد ویژگی های کیفیت هدف از یک تمرکز پردازش تصویر (نه فوکوس نرخ بیت) در مقاله رمزگذاری اولیه وجود دارد.

از پارامترهای خط فرمان FFmpeg زیر برای بهینه سازی نرخ بیت حالت Q استفاده کنید:

ffmpeg
-b:v 0 با علامت گذاری میزان بیت ویدیو به عنوان 0 ، ما به صراحت حالت "Q" را تنظیم می کنیم
-g <arg> فاصله فریم های کلیدی را در فریم ها تنظیم می کند (به طور پیش فرض روی 240)
-crf <arg> حداکثر سطح کیفیت را تنظیم می کند. مقادیر معتبر 0-63 هستند. اعداد کمتر کیفیت بالاتری دارند
-quality good -speed 0 پیش فرض و برای اکثر برنامه ها توصیه می شود. best بیشتر یک ابزار تحقیقاتی است، با بهبود جزئی نسبت به -quality good -speed 0
-lossless حالت بدون ضرر

نرخ بیت حالت Q: نمونه های FFmpeg

مثال اول یک تنظیم حالت Q بسیار شدید است و فقط برای تصویر ارائه شده است . (حتی پردازش کلیپ 120 ثانیه ای در این نمونه ها چندین ساعت طول می کشد و فایل خروجی تولید شده معمولاً بسیار بزرگتر از منبع اصلی است.)

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -g 1 -b:v 0 -crf 0 -quality good \
  -speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm

برای مقایسه اثر -crf ، نمونه‌های زیر فقط -crf متفاوت هستند. توجه داشته باشید که -g تعریف نشده است، بنابراین به‌طور پیش‌فرض 240 خواهد بود، و در عمل -crf پیش‌فرض 10 است، بنابراین بدون درج هیچ یک از پارامترها در دومین مثال از سه مثال، همان نتیجه را خواهیم داشت:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 0 -quality good \
  -speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

خروجی این نمونه ها از نظر اندازه روی دیسک متفاوت است. با تنظیم -crf روی 0 ، فایل 711.8 مگابایت، با -crf تنظیم شده روی 10 ، حجم فایل 125.3 مگابایت و با -crf تنظیم شده روی 63 ، فایل 4.5 مگابایت بود. به زبان بسیار ساده، این نشان می‌دهد که کیفیت فایل کدگذاری شده با VP9 را با افزایش مقدار آرگومان -crf . خلاصه کامل همه فایل های خروجی در جدول نتایج زیر آمده است.

اکنون اجازه دهید اثر تغییر تنظیمات -g را با هم مقایسه کنیم.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 1 -b:v 0 -quality good \
  -speed 0  -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 240 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 480 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm

متوجه شدیم که تنظیم -g 1 یک فایل بسیار بزرگ با حجم 25.9 مگابایت تولید می کند. این را با تغییر -g 240 مقایسه کنید (به طور واضح همان حالت پیش فرض را تنظیم کنید) که در نهایت با یک فایل 4.5 مگابایتی و -g 480 که در نهایت با یک فایل 4.4 مگابایتی مواجه می شویم.

CQ

CQ یک حالت توصیه شده برای ویدیوهای مبتنی بر فایل است.

نمودار حالت CQ

برای اکثر انواع محتوا، توصیه می کنیم از حالت کیفیت محدود (CQ) با درج نرخ بیت استفاده کنید. اکثر ویدیوها حاوی ترکیبی از صحنه‌های پرحرکت (مثلاً سکانس‌های اکشن) و صحنه‌هایی با جزئیات کمتر (مثلاً مکالمات) هستند. حالت CQ به رمزگذار اجازه می‌دهد تا سطح کیفیت معقولی را در طول صحنه‌های طولانی‌تر و آسان‌تر (بدون هدر دادن بیت‌ها) حفظ کند، در حالی که بیت‌های بیشتری را برای دنباله‌های دشوار اختصاص می‌دهد.

با این وجود، ما همچنان باید با ارائه یک محدوده بالا ، فرآیند را محدود کنیم - در غیر این صورت ممکن است اصلاً فشرده سازی وجود نداشته باشد! همچنین می‌توانیم محدوده کمتری را تنظیم کنیم، جایی که حتی اگر تصویر سیاه باشد و فرآیند رمزگذاری تقریباً کاری برای انجام دادن نداشته باشد، باز هم آن داده‌ها را انجام خواهیم داد، شاید با کارایی کمتر از آنچه می‌توانیم فشرده و "بسیار سیاه" به نظر می رسد.

علاوه بر این ما باید آستانه کوانتایزر را نیز تعیین کنیم. در VP9 آستانه کوانتایزر می تواند از 0 تا 63 تغییر کند.

پارامترهای خط فرمان FFmpeg زیر برای حالت CQ استفاده می شود:
ffmpeg
-b:v <arg> نرخ بیت هدف را تنظیم می کند (به عنوان مثال 500k)
-minrate <arg>
-maxrate <arg>
حداقل و حداکثر نرخ بیت را تنظیم می کند.
-crf <arg> حداکثر سطح کیفیت را تنظیم می کند. مقادیر معتبر 0 تا 63 هستند، اعداد پایین تر کیفیت بالاتری دارند.
حالت نرخ بیت CQ: نمونه های FFmpeg

مثال اول یک محدودیت نسبتاً گسترده ارائه می دهد. با این حال، در مقایسه با مثال‌های ذکر شده در بالا برای Q، متوجه می‌شویم که این امر باعث می‌شود بیت‌تریت‌ها به محدوده بالاتری بروند و کیفیت خروجی به طور قابل توجهی بالاتر است. اندازه فایل به طور قابل توجهی بزرگتر است.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1000k -maxrate 4000k -crf 10  -c:a libvorbis \
  CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm

فایل خروجی در این نمونه 20.2 مگابایت بر روی دیسک بود -- به طور قابل توجهی کوچکتر از رمزگذاری حالت Q در مثال های بالا.

در مقابل برای مثال بعدی، ما نرخ بیت را به محدوده بسیار دقیق تری محدود کرده ایم.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10  -c:a libvorbis \
  CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm

در این مثال، اندازه فایل خروجی 24.1 مگابایت بود، و در مواقع پیچیدگی و حرکت بالا، کیفیت ویدیو در مقایسه با مثال قبلی به وضوح کاهش می‌یابد.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

در این مثال نهایی، حجم خروجی به میزان قابل توجهی کاهش یافت و به 13.2 مگابایت بر روی دیسک کاهش یافت.

VBR

حالت نرخ بیت متغیر (VBR) برای پخش فایل های ویدیویی درخواستی با محتوای پرحرکت (به عنوان مثال ورزش) توصیه می شود. این به خوبی برای تحویل مبتنی بر HTTP مناسب است.

نمودار حالت VBR

در یک مدل VBR، صحنه‌های اکشن ممکن است با نرخ بیت بالاتری نسبت به صحنه‌های «آسان‌تر» که با فریم کلیدی سازگار هستند، کدگذاری شوند.

برای مدل‌های تحویل جریان بزرگ، مزایای VBR می‌تواند به میزان قابل توجهی از نظر توزیع و زیرساخت افزایش یابد. هنگامی که بسیاری از جریان های VBR توسط یک زیرساخت ارائه می شوند، این می تواند مزایایی را برای همه بینندگانی که از سیستم استفاده می کنند فراهم کند.

VP9 VBR همچنین برای رمزگذاری ورزش و سایر مطالب با حرکت بالا توصیه می شود. برای چنین محتوایی با پیچیدگی بالا، VBR در طول دوره‌های حرکت پایین‌تر به کیفیت بالاتری دست می‌یابد.

پارامترهای خط فرمان FFmpeg زیر برای حالت VBR استفاده می شود:
ffmpeg
-quality good اگر این وجود داشته باشد، FFmpeg تنظیم -speed بعدی را در نظر می گیرد
-speed <arg> برای VIDEO ON DEMAND مقادیر معتبر 0-4 است که 0 بالاترین کیفیت و 4 کمترین است. (برای پخش زنده محدوده 5-8 است - CBR را در زیر ببینید)
حالت میزان بیت VBR: نمونه های FFmpeg
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 0  -c:a libvorbis \
  VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

CBR

حالت نرخ بیت ثابت (CBR) برای پخش زنده با VP9 توصیه می شود.

نمودار حالت CBR

CBR اساساً نرخ بیت بالایی را به عنوان "سقف سخت" تنظیم می کند. این بدان معنی است که فرآیند رمزگذاری نمی تواند داده هایی را با نرخی تولید کند که شبکه نمی تواند حمل کند.

به عنوان مثال، برای جریان‌های ارتباطی بلادرنگ (کنفرانس ویدیویی) مهم است که برنامه رمزگذاری شبکه را با داده‌های بیشتری از آنچه که می‌تواند حمل کند پر نکند. در این صورت، مشکلات همگام‌سازی صوتی/تصویری یا فریم‌های ثابت به طور قابل‌توجهی بر تجربه کاربر تأثیر می‌گذارد، بیش از کاهش راندمان فشرده‌سازی. با اطمینان از تعریف سقف سخت، VP9 کیفیت را با رسیدن به آن سقف کاهش می دهد.

پارامترهای خط فرمان FFmpeg زیر برای حالت CBR استفاده می شود:
ffmpeg
-quality realtime اگر این وجود داشته باشد، FFmpeg تنظیم -speed بعدی را در نظر می گیرد
-speed <arg> برای پخش زنده مقادیر معتبر 5 تا 8 است که 5 بالاترین کیفیت و 8 کمترین است. (برای ویدیوی درخواستی اینها 0 تا 4 است. VBR را در بالا ببینید.)
-minrate <arg>
-maxrate <arg>
حداقل و حداکثر میزان بیت را تنظیم می کند ** اینها باید روی همان مقدار -b:v بیت ریت برای حالت CBR تنظیم شوند**.

به عبارت بسیار ساده، ما نرخ بیت هدف، حداقل و حداکثر را بر روی یک مقدار ثابت می کنیم و به کوانتایزر می گوییم که عملیات ها به زمان حساس هستند.

حالت نرخ بیت CBR: نمونه های FFmpeg

مثال‌های زیر تنظیم نرخ بیت را روی اهداف ۲ مگابیت بر ثانیه و ۵۰۰ کیلوبیت در ثانیه بررسی می‌کنند:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
  CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

نتایج

هر یک از کدهای فوق بر روی یک سیستم لینوکس اوبونتو با مشخصات زیر انجام شد:

  • پردازنده: 4x Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
  • حافظه (رم): 8060 مگابایت (1492 مگابایت استفاده شده)
  • گرافیک: Intel HD Graphics 530 (Skylake GT2)
  • سیستم عامل: اوبونتو 16.04 LTS

فایل منبع در همه موارد یک کلیپ یک دقیقه و بیست ثانیه ای (1:20) بود که از Tears Of Steel جمع آوری شده بود.

فایل رمزگذاری دقیقه اندازه فایل روی دیسک
Q_g_1_crf_0_120s_tears_of_steel_1080p.webm 81 1.06 گیگابایت
Q_crf_0_120s_tears_of_steel_1080p.webm 131 711.8 مگابایت
Q_crf_10_120s_tears_of_steel_1080p.webm 118 125.3 مگابایت
Q_crf_63_120s_tears_of_steel_1080p.webm 27 4.5 مگابایت
Q_g_1_120s_tears_of_steel_1080p.webm 51 25.9 مگابایت
Q_g_240_120s_tears_of_steel_1080p.webm 28 4.5 مگابایت
Q_g_480_120s_tears_of_steel_1080p.webm 10 4.4 مگابایت
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm 11 20.2 مگابایت
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1 مگابایت
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm 50 13.2 مگابایت
VBR_good_0_120s_tears_of_steel_1080p.webm 3 23.4 مگابایت
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9 مگابایت
VBR_good_8_120s_tears_of_steel_1080p.webm 1 23.9 مگابایت
CBR_2000_realtime_speed_0_120s_tears_of_steel_1080p.webm 98 21 مگابایت
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 2 24.8 مگابایت
CBR_2000_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 21 مگابایت
CBR_500_realtime_speed_0_120s_tears_of_steel_1080p.webm 73 6.2 مگابایت
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 8.5 مگابایت
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 7.1 مگابایت

قابل توجه بود که تنظیم مقادیر -speed بالای 5 سرعت پردازش VP9 را تغییر می دهد. در حالی که این افزایش قابل توجهی در کوانتیزه شدن است (که توسط اثر شدیداً "دیگر" روی نرخ بیت سریع با کیفیت بسیار پایین مشاهده می شود)، VP9 هنوز هم قادر است خروجی 1080p با نرخ بیت پایین بسیار خوب تولید کند، البته برای دستگاه های موبایل کوچکتر از نمایشگرهای بزرگتر مناسب تر است. .

ملاحظات در مورد موارد استفاده با پوسته پوسته شدن مجدد (اندازه مجدد)

بدیهی است که حالت‌های میزان بیت VP9 مجزا نیستند و ممکن است با بسیاری از آرگومان‌ها و پارامترهای دیگر ترکیب شوند تا به طور خاص موارد استفاده را هدف قرار دهند. یکی از موارد استفاده معمول ممکن است تغییر مقیاس ابعاد ویدیوی خروجی، برای هدف قرار دادن یک دستگاه خاص باشد.

یک مثال کلاسیک از این می تواند تغییر یک جریان HD به خروجی SD باشد. باز هم این تأثیرات قابل توجهی بر زمان پردازش و نرخ بیت خروجی خواهد داشت. در سناریویی که در آن دو دستور FFmpeg در غیر این صورت یکسان هستند، صرفاً تنظیم اندازه ویدیوی خروجی باعث تغییر اندازه فایل حاصل و در واقع میزان بیت آن در یک مدل استریم می‌شود.

برای مثال، ما یک مثال میانی از هر یک از حالت‌های نرخ بیت گرفته‌ایم و به سادگی پارامترهای تغییر مقیاس را اضافه کرده‌ایم.

حالت Q
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
حالت CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
حالت VBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
حالت CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

جدول نتایج برای مقیاس بندی مجدد

فایل رمزگذاری دقیقه اندازه فایل روی دیسک
640x480_Q_crf_10_120s_tears_of_steel_1080p.webm 5 3.4 مگابایت
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm 2 22.4 مگابایت
640x480_VBR_good_5_120s_tears_of_steel_1080p.webm 1 22.6 مگابایت
640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm 4 23 مگابایت

برای سهولت مقایسه، اینها همان دستورات FFmpeg از نمونه های قبلی ما هستند، اما بدون مقیاس:

فایل رمزگذاری دقیقه اندازه فایل روی دیسک
Q_crf_10_120s_tears_of_steel_1080p.webm 56 126 مگابایت
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1 مگابایت
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9 مگابایت
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 24.8 مگابایت

همانطور که خواهید دید، کاهش قابل توجهی در اندازه فایل های خروجی برای هر کدام وجود دارد، و در حالی که در بیشتر نمونه ها کاهش در زمان رمزگذاری وجود دارد، در حالت Q زمان رمزگذاری در واقع افزایش یافته است. فشرده‌سازی «بیشتر» یک ویدیو به تلاش بیشتری نیاز دارد، بنابراین حتی اگر انتظار می‌رود که فایل خروجی در صورت عدم محدودیت کیفیت کوچک‌تر باشد (همانطور که در حالت Q است)، ممکن است در واقع زمان صرف شده برای تولید فایل خروجی را افزایش دهد. فرض نکنید که یک فایل کوچکتر همیشه می تواند سریعتر توسط فرآیند رمزگذاری تحویل داده شود.

مقیاس مجدد و کاهش بیت ریت در ترکیب

به عنوان مقایسه نهایی، نمونه‌های زیر نمونه‌های CQ، VBR و CBR را مجدداً اجرا می‌کنند، اما این بار ما نرخ بیت هدف را به سطح 500 کیلوبیت بر ثانیه محدود می‌کنیم - تقریباً یک چهارم (در راستای کاهش اندازه تصویر). .

حالت CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 550k -crf 10 -vf  scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
حالت VBR
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
حالت CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

جدول نتایج برای تغییر مقیاس و کاهش نرخ بیت هدف

فایل رمزگذاری دقیقه اندازه فایل روی دیسک
640x480_CQ_500_crf_0_120s_tears_of_steel_1080p.webm 1 7 مگابایت
640x480_VBR_500_good_5_120s_tears_of_steel_1080p.webm 1 7 مگابایت
640x480_CBR_500_realtime_5_120s_tears_of_steel_1080p.webm 1 7.6 مگابایت

همانطور که می بینید، زمان رمزگذاری بیشتر کوتاه شده است.