کالبدشکافی فشردهسازی ویدیو: چرا تماشای فیلم 4K اینترنت شما را نابود نمیکند؟
بیشتر مردم تصور میکنند ویدیو مجموعهای از عکسهای پیدرپی است، اما در واقعیت، ویدیوهای دیجیتال بیشتر از آنکه تصویر باشند، معادلات ریاضی پیچیدهای برای پیشبینی حرکت هستند.
به قلم غزل بختیاری
این خبر را به اشتراک بگذارید
- مهندسان شبکه
- تمرکز بر کاهش پهنای باند و جلوگیری از فروپاشی شبکههای جهانی.
- توسعهدهندگان متنباز
- تلاش برای ایجاد استانداردهای رایگان و در دسترس برای همه.
- حافظان کیفیت
- نگرانی از دست رفتن جزئیات هنری در فرآیند فشردهسازی.
نکات کلیدی
- ویدیوهای دیجیتال مجموعهای از عکسهای کامل نیستند، بلکه بیشتر شامل دستورالعملهای ریاضی برای جابجایی پیکسلها هستند.
- فریمهای کلیدی (I-Frames) تنها تصاویر کاملی هستند که هر چند ثانیه یکبار ارسال میشوند.
- فریمهای پیشبینیکننده (P و B) فقط تغییرات رخ داده نسبت به فریمهای قبلی و بعدی را ثبت میکنند.
- کدکهای جدید مانند AV1 میتوانند نویز تصویر را حذف کرده و آن را به صورت مصنوعی در دستگاه کاربر بازسازی کنند.
- فشردهسازی بیشتر به معنای نیاز به قدرت پردازشی بالاتر در دستگاه کاربر برای بازگشایی ویدیو است.
بزرگترین دروغی که درباره ویدیوهای دیجیتال به ما گفتهاند این است که ویدیو صرفاً مجموعهای از عکسهاست که با سرعت بالا پخش میشوند. اگر یک ویدیوی ۴K با سرعت ۶۰ فریم بر ثانیه واقعاً ۶۰ عکس کامل در هر ثانیه بود، تماشای یک دقیقه از آن به چندین گیگابایت اینترنت نیاز داشت و زیرساختهای جهانی در همان روزهای اول فرو میپاشیدند.
اما در واقعیت، وقتی در حال تماشای نتفلیکس یا یوتیوب هستید، دستگاه شما در حال دانلود مداوم عکس نیست؛ بلکه در حال دریافت یک سری دستورالعملهای ریاضی پیچیده است که به پیکسلها میگویند چگونه حرکت کنند. این جادوی «فشردهسازی ویدیو» است که اینترنت مدرن را از فروپاشی نجات داده است.[2]
برای درک این مکانیزم، باید بدانیم که فشردهسازی ویدیو به دو دسته اصلی تقسیم میشود: فشردهسازی مکانی (Spatial) و فشردهسازی زمانی (Temporal). فشردهسازی مکانی شبیه به کاری است که فرمت JPEG با یک عکس ثابت انجام میدهد؛ یعنی حذف اطلاعات تکراری در یک تصویر واحد.
اما انقلاب واقعی در فشردهسازی زمانی رخ میدهد. الگوریتمهای ویدیویی متوجه یک حقیقت ساده شدهاند: در بیشتر ویدیوها، از یک فریم تا فریم بعدی، تقریباً هیچچیز تغییر نمیکند. اگر شخصی در حال صحبت جلوی یک دیوار است، چرا باید تصویر آن دیوار را در هر ۶۰ فریمِ یک ثانیه دوباره دانلود کنیم؟[2]
اینجاست که سه مفهوم کلیدی وارد بازی میشوند: فریمهای I، فریمهای P و فریمهای B. فریم کلیدی یا I-Frame تنها فریم مستقلی است که یک عکس کامل را در خود جای داده است. این فریمها معمولاً هر چند ثانیه یکبار ارسال میشوند تا یک نقطه شروع تمیز ایجاد کنند.[1]
پس از یک I-Frame، نوبت به فریمهای پیشبینیکننده (P-Frames) میرسد. این فریمها تصویر کاملی ندارند؛ آنها فقط تغییراتی را که نسبت به فریم قبلی رخ داده است ثبت میکنند. اگر فقط لبهای شخص حرکت کرده باشد، P-Frame فقط اطلاعات مربوط به حرکت لبها را در خود دارد و بقیه تصویر را از فریم قبلی کپی میکند.[1]
پس از یک I-Frame، نوبت به فریمهای پیشبینیکننده (P-Frames) میرسد.
پیچیدهترین بخش، فریمهای دوطرفه (B-Frames) هستند. این فریمها برای پیشبینی حرکت، هم به فریمهای قبلی و هم به فریمهای بعدی نگاه میکنند. این کار باعث میشود حجم دادهها به شدت کاهش یابد، زیرا الگوریتم میتواند دقیقاً حدس بزند که یک شیء در میان دو نقطه چگونه حرکت کرده است.[1]
برای انجام این کار، کدکهای ویدیویی تصویر را به مربعهای کوچکی به نام «ماکروبلوک» تقسیم میکنند. سپس از ابزاری به نام «بردارهای حرکتی» (Motion Vectors) استفاده میکنند. به جای اینکه رنگ پیکسلهای یک ماشین در حال حرکت را دوباره کدگذاری کنند، الگوریتم یک بردار حرکتی میفرستد که میگوید: «این بلوک از پیکسلها را بگیر و ۱۰ پیکسل به سمت چپ ببر».[2]
با ظهور رزولوشنهای 4K و 8K، کدکهای قدیمی مانند H.264 دیگر پاسخگو نبودند. این موضوع باعث تولد کدکهای نسل جدید مانند AV1 شد. AV1 که توسط ائتلافی از غولهای فناوری (از جمله گوگل، نتفلیکس و آمازون) توسعه یافته است، میتواند ویدیوها را ۳۰ تا ۵۰ درصد بیشتر از نسلهای قبلی فشرده کند، بدون اینکه کیفیت افت کند.[3]
یکی از ترفندهای هوشمندانه AV1، نحوه برخورد آن با «نویز تصویر» (Film Grain) است. نویز و دانههای ریز تصویر، دشمن فشردهسازی هستند زیرا کاملاً تصادفیاند و الگوریتم نمیتواند آنها را پیشبینی کند. تلاش برای فشردهسازی نویز، حجم فایل را به شدت افزایش میدهد.[3]
راهکار AV1 شگفتانگیز است: این کدک در مبدأ، تمام نویزهای تصویر را پاک میکند و ویدیو را به صورت کاملاً صاف فشرده میکند. سپس یک معادله ریاضی کوچک به دستگاه شما میفرستد که ویژگیهای آن نویز را توصیف میکند. در نهایت، پردازنده گوشی یا تلویزیون شما، آن نویز را به صورت مصنوعی تولید کرده و روی تصویر قرار میدهد تا حس سینمایی فیلم حفظ شود.
البته این جادو هزینهای هم دارد. هرچه ویدیو بیشتر فشرده شود، پردازنده دستگاه شما باید محاسبات ریاضی سنگینتری را برای بازگشایی (Decode) آن انجام دهد. به همین دلیل است که پخش یک ویدیوی بسیار فشرده AV1 روی یک گوشی قدیمی، ممکن است باعث داغ شدن شدید باتری و افت فریم شود.[3]
در نهایت، فشردهسازی ویدیو یک نبرد دائمی بین پهنای باند اینترنت و قدرت پردازشی دستگاههاست. هر بار که ما به سمت کیفیتهای بالاتر حرکت میکنیم، مهندسان نرمافزار مجبورند دروغهای پیچیدهتری به چشمان ما بگویند تا اینترنت بتواند بار این دادهها را تحمل کند.[4]
اصطلاحات کلیدی
- کدک (Codec)
- نرمافزار یا سختافزاری که دادههای ویدیویی خام را فشرده (کدگذاری) و برای پخش دوباره بازگشایی (کدگشایی) میکند.
- فریم کلیدی (I-Frame)
- فریمی در ویدیو که به صورت یک تصویر کامل و مستقل ذخیره میشود و نیازی به اطلاعات فریمهای دیگر ندارد.
- بردار حرکتی (Motion Vector)
- یک دستورالعمل ریاضی که به جای ذخیره مجدد پیکسلها، مسیر حرکت یک بلوک از تصویر را از یک فریم به فریم بعدی نشان میدهد.
- بیتریت (Bitrate)
- مقدار دادههایی که در هر ثانیه از یک ویدیو پردازش یا منتقل میشود؛ هرچه بیتریت بالاتر باشد، کیفیت و حجم فایل بیشتر است.
منابع
[1]Wikipediaتوسعهدهندگان متنبازVideo compression picture types
مطالعه در Wikipedia →
[2]Alibaba Cloudمهندسان شبکهHow Video Compression Works
مطالعه در Alibaba Cloud →
[3]Wikipediaتوسعهدهندگان متنبازAV1
مطالعه در Wikipedia →
[4]تیم سردبیری کوهستانحافظان کیفیتتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
هر زاویه. هر روز.
دریافت فناوری اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.

