رمزگذاری اولیه
اصول فشرده سازی ویدیو
این بخش گزینه های اساسی برای رمزگذاری VP9، از جمله اندازه فریم، کنترل نرخ بیت اولیه و کیفیت را پوشش می دهد.
اگر در زمینه فشردهسازی ویدیو تازه کار هستید، ممکن است بخواهید این ویدیو را تماشا کنید تا در مورد نیاز به فشردهسازی ویدیو و نحوه عملکرد آن بیشتر بدانید.
یک رمزگذاری ساده
دستور FFmpeg زیر یک فایل ورودی را با صدای Opus به ویدیوی VP9 تبدیل می کند. این ساده ترین کد ممکن است که از تنظیمات پیش فرض استفاده می کند.
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
این کد FFmpeg از پارامترهای خط فرمان زیر استفاده می کند:
FFmpeg | |
---|---|
-i <filename> | نام فایل ورودی را مشخص می کند |
-c:v libvpx-vp9 | به FFmpeg می گوید که ویدیوی VP9 ایجاد کند |
-c:a libopus | به FFmpeg می گوید که صدای Opus را ایجاد کند |
output.webm | نام فایل خروجی را مشخص می کند |
FFmpeg نوع فایلی را که باید از نام فایل خروجی که استفاده می کنید استنتاج می کند. در این مثال، FFmpeg یک فایل WebM را خروجی میدهد زیرا ما output.webm
را درخواست کردیم.
قطعنامه
هر ویدیو دارای یک اندازه فریم است (که عرض و ارتفاع پیکسل را نشان می دهد). پارامتر خط فرمان FFmpeg زیر را می توان برای کنترل اندازه فریم ویدیوی خروجی برای رمزگذاری VP9 استفاده کرد:
FFmpeg | |
---|---|
-vf scale=<width>x<height> | عرض و ارتفاع قاب |
به عنوان مثال، دستور FFmpeg زیر یک ویدیوی 640x480 VP9 WebM را خروجی می دهد.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-c:v libvpx-vp9 -c:a libopus output.webm
رزولوشنهای کوچکتر کیفیت پایینتری دارند، اما وضوحهای بزرگتر به پهنای باند بیشتر، قدرت پردازش بیشتری برای رمزگشایی نیاز دارند و ممکن است در دستگاههای قدیمیتر پشتیبانی نشوند. برای VP9، 640x480 وضوح ایمن برای طیف گسترده ای از دستگاه های تلفن همراه و وب در نظر گرفته می شود.
میزان بیت (نرخ بیت)
VP9 از چندین حالت مختلف بیت ریت پشتیبانی می کند:
حالت | |
---|---|
کوانتایزر ثابت (Q) | به شما امکان می دهد یک مقدار کوانتایزر ثابت را مشخص کنید. نرخ بیت متفاوت خواهد بود |
کیفیت محدود (CQ) | به شما امکان می دهد حداکثر سطح کیفیت را تنظیم کنید. کیفیت ممکن است در پارامترهای نرخ بیت متفاوت باشد |
نرخ بیت متغیر (VBR) | کیفیت و میزان بیت را در طول زمان با محدودیت های مربوط به میزان بیت متعادل می کند |
نرخ بیت ثابت (CBR) | تلاش برای ثابت نگه داشتن نرخ بیت نسبتاً ثابت در حالی که کیفیت متفاوت است |
حالت CQ برای ویدیوهای مبتنی بر فایل (برخلاف پخش زنده) توصیه می شود. پارامترهای خط فرمان FFmpeg زیر برای حالت CQ استفاده می شود:
FFmpeg | |
---|---|
-b:v <arg> | نرخ بیت هدف را تنظیم می کند (به عنوان مثال 500k) |
-minrate <arg> -maxrate <arg> | حداقل و حداکثر نرخ بیت را تنظیم می کند. |
-crf <arg> | حداکثر سطح کیفیت را تنظیم می کند. مقادیر معتبر 0-63 هستند، اعداد پایین تر کیفیت بالاتری دارند. |
به عنوان مثال، دستور FFmpeg زیر یک فایل ویدئویی با کیفیت متوسط 640x480 با استفاده از حالت CQ ایجاد میکند، با میانگین بیت ریت 750 کیلوبیت در ثانیه و حداکثر کیفیت محدود به 33.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm
نرخ بیت بسته به کیفیتی که می خواهید به دست آورید و وضوح ویدیو متفاوت است. مجموعه کاملی از توصیهها برای نرخ بیت در وضوحهای مختلف را میتوانید در اینجا پیدا کنید.
تنظیمات کیفیت و سرعت
فشردهسازی ویدئو، یک مبادله بین کیفیت خروجی و مدت زمانی است که برای ایجاد آن صرف میشود. به طور کلی، همیشه میتوانید با دادن زمان بیشتر برای رمزگذاری، کیفیت بالاتری داشته باشید، اما زمان لازم برای دریافت بالاترین کیفیت ممکن ممکن است غیرعملی باشد.
VP9 چندین تنظیمات را برای متعادل کردن کیفیت و سرعت ارائه می دهد:
تنظیمات کیفیت به رمزگذار دستور می دهد که چگونه ویدئو را فشرده کند. حالت های موجود بهترین، خوب و بیدرنگ هستند.
تنظیمات Threading به رمزگذار اجازه می دهد تا از چندین رشته CPU برای رمزگذاری ویدیو استفاده کند. این تنظیمات ممکن است کمی کیفیت را کاهش دهند، اما می توانند به طور قابل توجهی سرعت رمزگذاری و رمزگشایی را بهبود بخشند.
این دو نوع تنظیمات توسط چندین پارامتر خط فرمان کنترل می شوند:
FFmpeg | |
---|---|
-threads | تعداد رشته های مورد استفاده در هنگام رمزگذاری را نشان می دهد. |
-quality | ممکن است روی good ، best یا realtime تنظیم شود |
-speed | این پارامتر بسته به اینکه کیفیت روی good یا realtime تنظیم شده باشد معانی مختلفی دارد. تنظیمات سرعت 0-4 برای VoD در good و best اعمال می شود که 0 بالاترین کیفیت و 4 پایین ترین است. مقادیر معتبر Realtime 5-8 هستند. اعداد کمتر به معنای کیفیت بالاتر است |
-tile-columns | کاشی کاری ویدیو را به مناطق مستطیلی تقسیم می کند که امکان چند رشته را برای رمزگذاری و رمزگشایی فراهم می کند. تعداد کاشی ها همیشه توان دو است. 0 = 1 کاشی، 1 = 2، 2 = 4، 3 = 8، 4 = 16، 5 = 32. |
دستور FFmpeg زیر یک فایل 640x480 با کیفیت "خوب" و سرعت روی 0 (کیفیت بالا) ایجاد می کند:
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
output.webm
انتخاب شما برای تنظیمات کیفیت و سرعت ممکن است بسته به وضوح و قدرت پردازش موجود متفاوت باشد. مجموعه کاملی از توصیه ها را می توان در بخش بعدی یافت.