مقدمه: توهمی به نام استریم روان شما روی کاناپه نشستهاید، اپلیکیشن یوتیوب یا نتفلیکس را در تلویزیون هوشمند خود باز میکنید و با فشردن یک دکمه، تماشای یک مستند حیاتوحش را با کیفیت خیرهکننده 4K ... مقدمه: توهمی به نام استریم روان شما روی کاناپه نشستهاید، اپلیکیشن یوتیوب یا نتفلیکس را در تلویزیون هوشمند خود باز میکنید و با فشردن یک دکمه، تماشای یک مستند حیاتوحش را با کیفیت خیرهکننده 4K آغاز میکنید. تصویر بدون هیچ تأخیری پخش میشود؛ پرهای یک عقاب با وضوح کامل در باد تکان میخورد و قطرات آب رودخانه زیر نور خورشید میدرخشند. همه چیز آنقدر طبیعی و روان است که ما این فرآیند را بدیهی میدانیم. اما در پشت صحنهی این تجربه بینقص، یکی از بزرگترین جنگهای ریاضیاتی و مهندسی تاریخ در جریان است. حقیقت این است که اینترنت، زیرساخت فیزیکی، کابلهای زیر اقیانوسها و سرورهای عظیم دیتاسنترها، در حالت عادی توانایی انتقال این حجم از دادههای خام را ندارند. اگر ویدیوها به همان شکل خامی که توسط لنز دوربین ثبت میشوند به اینترنت فرستاده میشدند، ستون فقرات شبکه جهانی وب در کمتر از چند ثانیه فرو میریخت و سرورهای غولپیکری مانند سرورهای یوتیوب زیر بار پردازش منفجر میشدند. نجاتدهنده بشریت در این بحران داده، نه کابلهای قطورتر بود و نه پردازندههای سریعتر؛ بلکه الگوریتمهای نامرئی و پیچیدهای به نام «کدکهای ویدیویی» (Video Codecs) بودند. این مقاله روایتی است از جادوی فشردهسازی؛ هنر فریب دادن چشم انسان و مهار کردن سیلاب بیرحم پیکسلها. فصل اول: وزن غیرقابلتحمل یک پیکسل خام برای درک عظمت کاری که کدکها انجام میدهند، ابتدا باید با کابوس «ویدیوی خام» (Uncompressed Video) روبرو شویم. بیایید یک محاسبه ریاضی ساده انجام دهیم. یک ویدیوی استاندارد Full HD دارای رزولوشن 1920*1080 پیکسل است. این یعنی در هر فریم (قاب) از تصویر، بیش از 2,073,600 پیکسل وجود دارد. در دنیای دیجیتال، برای نمایش رنگ هر پیکسل معمولاً از 24 بیت (معادل 3 بایت) داده استفاده میشود (ترکیب سه رنگ قرمز، سبز و آبی). بنابراین، حجم تنها یک فریم از این ویدیو برابر با 6.2 مگابایت است. حالا در نظر بگیرید که یک ویدیوی روان معمولاً با نرخ 30 فریم بر ثانیه پخش میشود. با یک ضرب ساده متوجه میشویم که یک ثانیه ویدیوی خام Full HD نیازمند پردازش و انتقال 186 مگابایت داده است! این یعنی یک دقیقه ویدیوی خام به بیش از 11.1 گیگابایت فضا نیاز دارد. حالا تصور کنید پلتفرمی مانند یوتیوب که در آن کاربران در هر دقیقه بیش از 500 ساعت ویدیو آپلود میکنند، اگر قرار بود میزبان ویدیوهای خام باشد، چه فاجعهای رخ میداد؟ هزینه پهنای باند و ذخیرهسازی، هر شرکتی در کره زمین را ظرف چند روز ورشکسته میکرد. اینجاست که نیاز به یک «مترجم» و «فشردهساز» حیاتی میشود؛ نیازی که به تولد کدکها انجامید. فصل دوم: هنر فریب دادن چشم انسان کلمه Codec مخفف Coder-Decoder (رمزگذار-رمزگشا) است. وظیفه یک کدک این است که حجم عظیم دادههای ویدیویی را پیش از ارسال مچاله کند و در مقصد، آن را دوباره باز کرده و به نمایش بگذارد. اما چگونه میتوان حجم یک ویدیو را تا 99% کاهش داد بدون اینکه بیننده متوجه افت کیفیت فاحشی شود؟ مهندسان برای این کار به ترکیبی از ریاضیات پیشرفته و زیستشناسی متوسل شدند. اولین تکنیک کدکها، سوءاستفاده از نقاط ضعف بینایی انسان است. چشم انسان به تغییرات روشنایی (Luminance) بسیار حساستر از تغییرات رنگ (Chrominance) است. الگوریتمهای فشردهسازی با استفاده از تکنیکی به نام Chroma Subsampling، بخش بزرگی از اطلاعات رنگی تصویر را دور میریزند، در حالی که اطلاعات روشنایی را حفظ میکنند. مغز ما این کمبود رنگ را به طور خودکار جبران میکند و ما هرگز متوجه نمیشویم که نیمی از پیکسلهای روی صفحه در واقع اطلاعات رنگی مستقلی ندارند. فصل سوم: ماشین زمان در دل فریمها (تولد فشردهسازی زمانی) اما جادوی اصلی کدکها نه در دستکاری رنگ، بلکه در مفهومی به نام «فشردهسازی زمانی» (Temporal Compression) نهفته است. در اوایل دهه 2000، زمانی که استاندارد انقلابی H.264 در سال 2003 متولد شد، این تکنیک به بلوغ رسید. فرض کنید در حال تماشای اخبار هستید. یک گوینده پشت میز نشسته و صحبت میکند. در طول 30 فریمی که در یک ثانیه پخش میشود، پسزمینه تصویر (میز، دیوار، لوگوی شبکه) کاملاً ثابت است و تنها لبها، چشمها و دستان گوینده حرکت میکنند. اگر بخواهیم اطلاعات دیوار پشت سر گوینده را در هر 30 فریم دوباره ذخیره و ارسال کنیم، پهنای باند را هدر دادهایم. الگوریتمهای پیشرفتهای مانند H.264 ویدیو را به سه نوع فریم تقسیم میکنند: فریمهای I (Intra-frames): این فریمها یک تصویر کامل هستند (مانند یک عکس JPEG). حجم بالایی دارند و معمولاً هر چند ثانیه یکبار در ویدیو قرار میگیرند تا به عنوان نقطه مرجع عمل کنند. فریمهای P (Predicted frames): این فریمها به جای ذخیره کل تصویر، تنها تغییرات نسبت به فریم قبلی را ذخیره میکنند. (مثلاً: «همه چیز را از فریم قبل کپی کن، فقط این چند پیکسل مربوط به لب گوینده را کمی حرکت بده»). فریمهای B (Bi-directional frames): این فریمهای پیچیده، هم فریمهای قبلی و هم فریمهای بعدی را بررسی میکنند تا بالاترین میزان فشردهسازی را با پیشبینی مسیر حرکت اشیاء انجام دهند. با استفاده از این «بردارهای حرکتی» (Motion Vectors)، الگوریتمهای ریاضی توانستند حجم فایلها را به کسری از مگابایت در ثانیه برسانند و رویای پخش زنده ویدیو در بستر اینترنت را محقق کنند. فصل چهارم: یوتیوب، فلش و انفجار ویدیویی وب در 23 آوریل 2005، جواد کریم، یکی از همبنیانگذاران یوتیوب، اولین ویدیوی این پلتفرم با نام “Me at the zoo” را آپلود کرد. این ویدیوی19 ثانیهای با کیفیت بسیار پایین، نقطه آغازین یک امپراتوری بود. در آن زمان، یوتیوب از فرمتهای