کدک های ویدیویی مختلف نرخ فشرده سازی و کیفیت ویدیو متفاوتی را ارائه می دهند. اما از کدام باید استفاده کنید؟
پخش جریانی با کیفیت 4K هنجار جدیدی است، اما با توجه به انتقال اطلاعات بیش از 8.2 میلیون پیکسل در هر 16 میلی ثانیه – ذخیره و انتقال ویدیوی 4K در اینترنت کار آسانی نیست.
یک فیلم دو ساعته در صورت فشرده نشدن بیش از 1.7 ترابایت فضای ذخیره سازی را اشغال می کند. بنابراین، غولهای پخش جریانی مانند یوتیوب و نتفلیکس چگونه میتوانند ویدیوهایی را که فضای زیادی اشغال میکنند ذخیره و پخش کنند؟
خوب، آنها این کار را نمی کنند زیرا از کدک های ویدیویی برای کاهش حجم فیلم ها استفاده می کنند، اما کدک ویدیو چیست و کدام یک بهترین است؟
کدک ویدیو چیست؟
قبل از فرو رفتن عمیق در پیچیدگیهای کدکهای ویدیویی، درک چگونگی ایجاد یک ویدیو بسیار مهم است. به زبان ساده، ویدئو چیزی نیست جز مجموعه ای از تصاویر ثابت که به سرعت جایگزین یکدیگر می شوند.
با توجه به این سرعت تغییر بالا، مغز انسان تصور می کند که تصاویر در حال حرکت هستند و این توهم تماشای یک ویدیو را ایجاد می کند. بنابراین، هنگام تماشای یک ویدیو با کیفیت 4K، شما فقط به مجموعه ای از تصاویر با وضوح 2160×3840 نگاه می کنید. این رزولوشن بالای تصاویر، ویدئویی را که با کیفیت 4K گرفته شده است را قادر میسازد تا یک تجربه ویدیویی عالی را ارائه دهد. با این حال، این وضوح بالای تصاویر، اندازه ویدیو را افزایش میدهد و پخش جریانی روی کانالهایی با پهنای باند محدود مانند اینترنت را غیرممکن میکند.
برای حل این مشکل ما کدک های ویدیویی داریم. یک کدک ویدئویی که مخفف کلمه coder/decoder یا compression/decompression است، جریان تصاویر را به بیت داده فشرده می کند. این فشردهسازی میتواند کیفیت ویدیو را کاهش دهد یا بر اساس الگوریتمهای فشردهسازی استفادهشده تأثیری بر آن نداشته باشد.
همانطور که از نام آن پیداست، بیت فشرده سازی در یک کدک، اندازه هر تصویر را کاهش می دهد. برای انجام همین کار، الگوریتم فشردهسازی از تفاوتهای ظریف چشم انسان بهرهبرداری میکند و مانع از این میشود که مردم بدانند ویدیوهایی که تماشا میکنند فشرده شده است.
برعکس، فشردهسازی برعکس عمل میکند و ویدیو را با استفاده از اطلاعات فشردهشده رندر میکند.
اگرچه کدک ها در مورد فشرده سازی اطلاعات کار بسیار خوبی انجام می دهند، اما انجام همین کار می تواند برای CPU شما ضرر داشته باشد. با توجه به این موضوع، زمانی که الگوریتم های فشرده سازی ویدئو را روی سیستم خود اجرا می کنید، مشاهده نوسانات در عملکرد سیستم طبیعی است.
برای حل این مشکل، CPU ها و GPU ها دارای سخت افزار خاصی هستند که می توانند این الگوریتم های فشرده سازی را اجرا کنند. فعال کردن CPU برای انجام وظایف در دست هنگام در حالی که سخت افزار اختصاصی کدک های ویدئویی را پردازش می کند و کارایی را بهبود می بخشد.
کدک ویدیویی چگونه کار می کند؟
اکنون که درک اولیه ای از کاری که یک کدک ویدیو انجام می دهد داریم، می توانیم به نحوه عملکرد یک کدک نگاه کنیم.
زیر نمونه برداری کروما
همانطور که قبلا توضیح داده شد، ویدئوها از تصاویر تشکیل شده اند و نمونه برداری کروما اطلاعات هر تصویر را کاهش می دهد. برای انجام این کار، اطلاعات رنگ موجود در هر تصویر را کاهش می دهد، اما چگونه این کاهش اطلاعات رنگ توسط چشم انسان تشخیص داده می شود؟
خوب، می بینید، چشم انسان در تشخیص تغییرات در روشنایی عالی است، اما در مورد رنگ ها نمی توان همین را گفت. این به این دلیل است که چشم انسان در مقایسه با مخروطها (سلولهای گیرنده نوری که مسئول تمایز رنگها هستند) میلههای بیشتری دارد (سلولهای گیرنده نور مسئول تشخیص تغییرات در روشنایی). تفاوت در میله ها و مخروط ها باعث می شود که چشم هنگام مقایسه تصاویر فشرده و غیرفشرده، تغییرات رنگ را تشخیص ندهد.
برای انجام زیرنمونهسازی کروما، الگوریتم فشردهسازی ویدئو، اطلاعات پیکسل را در RGB به دادههای روشنایی و رنگ تبدیل میکند. پس از آن، الگوریتم میزان رنگ در تصویر را بر اساس سطوح فشرده سازی کاهش می دهد.
حذف اطلاعات فریم اضافی
ویدئوها از چندین فریم تصویر تشکیل شده اند و در بیشتر موارد، همه این فریم ها حاوی اطلاعات یکسانی هستند. برای مثال، ویدیویی را تصور کنید که شخصی در حال صحبت کردن در یک پسزمینه ثابت است. در چنین حالتی، تمامی فریم های ویدیو دارای ترکیب بندی مشابهی هستند. بنابراین برای رندر کردن ویدیو به تمامی تصاویر نیازی نیست. تنها چیزی که ما نیاز داریم یک تصویر پایه است که حاوی تمام اطلاعات و داده های مربوط به تغییر هنگام حرکت از یک فریم به فریم دیگر باشد.
از این رو، برای کاهش اندازه ویدئو، الگوریتم فشرده سازی فریم های ویدئویی را به فریم های I و P (قاب های پیش بینی شده) تقسیم می کند. در اینجا فریم های I حقیقت زمین هستند و برای ایجاد فریم های P استفاده می شوند. سپس فریمهای P با استفاده از اطلاعات فریمهای I و اطلاعات تغییر آن فریم خاص ارائه میشوند. با استفاده از این روش، یک ویدیو به مجموعهای از فریمهای I که در فریمهای P درهم میآیند، تجزیه میشود و ویدیو را بیشتر فشرده میکند.
فشرده سازی حرکت
اکنون که ویدیو را به فریم های I و P تقسیم کرده ایم، باید فشرده سازی حرکت را بررسی کنیم. بخشی از الگوریتم فشرده سازی ویدئو که به ایجاد فریم های P با استفاده از فریم های I کمک می کند. برای انجام این کار، الگوریتم فشردهسازی فریم I را به بلوکهایی میشکند که به بلوکهای ماکرو معروف هستند. سپس به این بلوک ها بردارهای حرکتی داده می شود که جهت حرکت این بلوک ها را هنگام انتقال از یک فریم به فریم دیگر مشخص می کنند.
این اطلاعات حرکت برای هر بلوک به الگوریتم فشرده سازی ویدیو کمک می کند تا مکان هر بلوک را در یک فریم آینده پیش بینی کند.
حذف داده های تصویر با فرکانس بالا
درست مانند تغییرات در داده های رنگی، چشم انسان نمی تواند تغییرات ظریف در عناصر با فرکانس بالا را در یک تصویر تشخیص دهد، اما عناصر با فرکانس بالا چیست؟ خوب، می بینید، تصویر ارائه شده بر روی صفحه نمایش شما شامل چندین پیکسل است و مقادیر این پیکسل ها بر اساس تصویر نمایش داده شده تغییر می کند.
در برخی از مناطق تصویر، مقادیر پیکسل به تدریج تغییر می کند و گفته می شود که چنین مناطقی فرکانس پایینی دارند. از طرف دیگر، اگر تغییر سریعی در داده های پیکسلی وجود داشته باشد، منطقه به عنوان دارای داده های با فرکانس بالا طبقه بندی می شود. الگوریتم های فشرده سازی ویدیو از تبدیل کسینوس گسسته برای کاهش مولفه فرکانس بالا استفاده می کنند.
هم اکنون به چگونگی کارکرد آن می پردازیم. ابتدا، الگوریتم DCT روی هر بلوک ماکرو اجرا می شود و سپس مناطقی را که در آن تغییر شدت پیکسل بسیار سریع است، تشخیص می دهد. سپس این نقاط داده را از تصویر حذف میکند و اندازه ویدیو را کاهش میدهد.
رمزگذاری
اکنون که تمام اطلاعات اضافی در ویدیو حذف شده است، میتوانیم بیتهای باقیمانده داده را ذخیره کنیم. برای انجام این کار، الگوریتم فشردهسازی ویدیو از یک طرح رمزگذاری مانند رمزگذاری هافمن استفاده میکند که تمام بیتهای داده را در یک فریم به تعداد دفعاتی که در ویدیو رخ میدهند پیوند میدهد و سپس آنها را به شکل درختی به هم متصل میکند. این دادههای رمزگذاریشده در یک سیستم ذخیره میشوند و آن را قادر میسازد تا یک ویدیو را به راحتی ارائه دهد.
کدکهای ویدیویی مختلف از تکنیکهای مختلفی برای فشردهسازی ویدیوها استفاده میکنند، اما در سطح بسیار ابتدایی، از پنج روش اساسی تعریفشده در بالا برای کاهش اندازه ویدیوها استفاده میکنند.
AV1 در مقابل HEVC در مقابل VP9: کدام کدک بهتر است؟
اکنون که متوجه شدیم کدکها چگونه کار میکنند، میتوانیم تعیین کنیم که کدام یک از AV1، HEVC و VP9 بهترین است.
تراکم پذیری و کیفیت
اگر یک ویدیوی 4K دارید که فضای زیادی را در سیستم شما اشغال می کند و نمی توانید آن را در پلتفرم پخش مورد علاقه خود آپلود کنید، ممکن است به دنبال کدک ویدیویی باشید که بهترین نسبت فشرده سازی را ارائه می دهد. با این حال، باید در نظر داشته باشید که با فشرده سازی ویدیو، کیفیت ارائه شده کاهش می یابد. بنابراین، هنگام انتخاب یک الگوریتم فشردهسازی، ضروری است به کیفیتی که در یک بیت ریت خاص ارائه میکند، نگاه کنیم، اما میزان بیت یک ویدیو چیست؟
به زبان ساده، نرخ بیت یک ویدیو به عنوان تعداد بیت هایی که ویدیو برای یک ثانیه به آن نیاز دارد، تعریف می شود. برای مثال، یک ویدیوی 24 بیتی 4K غیرفشرده که با 60 فریم اجرا می شود، نرخ بیت 11.9 گیگابیت بر ثانیه دارد. بنابراین، اگر یک ویدیوی 4K فشرده نشده را در اینترنت پخش کنید، Wi-Fi شما باید 11.9 گیگابیت داده در هر ثانیه ارائه دهد که سهمیه داده ماهانه شما را در چند دقیقه تمام میکند.
برعکس، استفاده از یک الگوریتم فشردهسازی، نرخ بیت را به مقدار بسیار کمی بر اساس میزان بیت انتخابی شما بدون کاهش کیفیت کاهش میدهد.
وقتی صحبت از اعداد تراکم پذیری/کیفیت می شود، AV1 پیشتاز بسته است و 28.1 درصد فشرده سازی بهتر در مقایسه با H.265 و 27.3 درصد صرفه جویی در مقایسه با VP9 ارائه می دهد در حالی که کیفیت مشابهی را ارائه می دهد.
بنابراین، اگر به دنبال بهترین فشرده سازی بدون کاهش کیفیت هستید، AV1 نسبت تراکم برای شماست. با توجه به نسبت فشرده سازی به کیفیت عالی کدک AV1، گوگل در برنامه کنفرانس ویدئویی خود Google Duo و Netflix در حین انتقال ویدئو در یک اتصال داده با پهنای باند کم از آن استفاده می کند.
سازگاری
همانطور که قبلاً توضیح داده شد، یک الگوریتم فشرده سازی ویدیو پس از فشرده شدن یک ویدیو را رمزگذاری می کند. اکنون برای پخش این ویدیو، دستگاه شما باید همان را رمزگشایی کند. بنابراین، اگر دستگاه شما پشتیبانی سختافزاری/نرمافزاری برای فشردهسازی ویدیو را نداشته باشد، نمیتواند آن را اجرا کند.
از این رو، درک جنبه سازگاری یک الگوریتم فشرده سازی مهم است، زیرا ایجاد و فشرده سازی محتوایی که نمی تواند در بسیاری از دستگاه ها اجرا شود، چه فایده ای دارد؟
بنابراین، اگر سازگاری چیزی است که به دنبال آن هستید، VP9 باید کدک برای شما باشد زیرا در بیش از دو میلیارد نقطه پایانی پشتیبانی میشود و میتواند در هر مرورگر، تلفن هوشمند و تلویزیون هوشمند اجرا شود.
این را نمی توان در مورد AV1 گفت زیرا از الگوریتم های جدیدتر و پیچیده تر برای کاهش اندازه فایل ویدیو استفاده می کند و نمی تواند در دستگاه های قدیمی پخش شود. در مورد پشتیبانی مرورگر، سافاری نمی تواند AV1 را پخش کند، اما مرورگرهایی مانند فایرفاکس و کروم می توانند ویدیوهای AV1 را بدون هیچ مشکلی پخش کنند.
از نظر پشتیبانی سختافزاری، تراشهها و پردازندههای گرافیکی جدید مانند Snapdragon 8 Gen 2، Samsung Exynos 2200، MediaTek Dimensity 1000 5G، Google Tensor G2، RTX 4000-Series انویدیا و پردازندههای گرافیکی Intel Xe و Arc از کدهای شتابدهنده سختافزار AV1 پشتیبانی میکنند. . بنابراین، اگر دستگاههایی دارید که از این چیپستها پشتیبانی میکنند، میتوانید از پخش محتوای فشردهشده با استفاده از کدکهای AV1 لذت ببرید، بدون اینکه قدرت CPU/GPU خود را تمام کنید.
وقتی صحبت از کدک H.265 می شود، اکثر مرورگرهای محبوب مانند سافاری، فایرفاکس و گوگل کروم می توانند ویدیوهای کدگذاری شده با استفاده از الگوریتم فشرده سازی را بدون هیچ مشکلی اجرا کنند. گفته شد، در مقایسه با AV1 و VP9، H.265 منبع باز نیست و برای استفاده از کدک H.265 باید مجوزها تهیه شود. به همین دلیل، برنامههایی مانند پخشکننده ویدیوی Movies & TV مایکروسافت که با سیستم عامل ارائه میشوند، بهطور پیشفرض نمیتوانند ویدیوهای کدگذاری شده با H.265 را اجرا کنند. در عوض، کاربران باید افزونههای اضافی را از فروشگاه ویندوز برای اجرای چنین ویدیوهایی نصب کنند.
سرعت رمزگذاری
کدک های ویدیویی حجم یک ویدیو را به میزان قابل توجهی کاهش می دهند، اما برای کاهش اندازه یک ویدیو، ویدیوی فشرده نشده باید با استفاده از نرم افزار پردازش شود، که زمان می برد. بنابراین، اگر میخواهید حجم یک ویدیو را کاهش دهید، باید با استفاده از یک الگوریتم فشردهسازی، زمان فشردهسازی ویدیو را بررسی کنید.
با توجه به راندمان رمزگذاری، VP9 پیشتاز بسته است و زمان رمزگذاری برای فشرده سازی ویدیوها بسیار کمتر از H.265 و AV1 است. از سوی دیگر، AV1 از نظر زمان رمزگذاری کندترین است و در مقایسه با H.265 می تواند سه برابر زمان بیشتری را برای رمزگذاری یک ویدیو صرف کند.
کدام کدک را باید انتخاب کنید؟
وقتی صحبت از کدک های ویدیویی می شود، یافتن کدک عالی بسیار ذهنی است، زیرا هر کدک ویژگی های مختلفی را ارائه می دهد.
اگر به دنبال بهترین کیفیت ویدیو هستید، به سراغ AV1 بروید. از سوی دیگر، اگر به دنبال سازگارترین کدک ویدیویی هستید، VP9 بهترین گزینه برای شما خواهد بود.
در نهایت، اگر به کیفیت خوب و فشرده سازی بدون سربار رمزگذاری نیاز دارید، کدک H.265 بسیار مناسب است.