همه چیز در مورد H.265 و H.264


در این مطلب سعی شده توضیحی کامل و جامع درباره H.264 و H.265 داده شود لذا این مطلب کمی طولانی است. اگر وقت و حوصله خواندن کامل این مطلب را ندارید به انتهای مطلب مراجعه کنید و جمع بندی بحث را مطالعه کنید.

کدک چیست؟

ابتدا باید بدانیم کدک CODEC چیست. احتمالاً تا به امروز بارها مجبور شده‌اید که برای آنکه بتوانید فایل‌های صوتی یا تصویری خاصی را بر روی کامپیوتر یا موبایل‌تان اجرا کنید، بسته‌های کدک رایگانی نظیر K-Lite Codec Pack Mega را دانلود و نصب کنید. اما شاید معنای این عبارت را ندانید. کدک CODEC در واقع سر واژه‌ی دو عبارت COMPRESSOR / DECOMPERESSOR به معنای “متراکم کردن و خارج کردن از حالت متراکم” CO+DEC است. به عبارت دیگر، فایل‌های خام سنگین صوتی و تصویری توسط الگوریتم‌های فشرده سازی، متراکم و سبک می‌شوند و دستگاه پخش شما برای اجرای این فایل‌ها نیاز به دیکدر همان الگوریتم دارد و شما با نصب بسته‌های کدک بر روی دستگاه خود ، دستگاه خود را قادر می‌سازید تا بتواند فایل رمزگذاری و فشرده شده نا آشنا را کدگشایی کرده و پخش کند.

همچنین میتوانید از پلیری (Player) که کدک‌های بیشتری را بصورت پیش فرض دارد استفاده کنید. این نرم فزار ها را میتوانید از صفحه ی نرم افزارهای مورد نیاز دانلود کنید.

به طور کلی تقریبا تمام ویدئوهایی که با آن‌ها سروکار داریم، از قبل به نحوی فشرده شده‌اند تا برای مصارف معمول حجم معقولی داشته باشند. از ویدئوهای بدون افت کیفیت (Lossless) تنها در مصارف خاصی مانند ساخت فیلم در استودیو‌های فیلم‌سازی استفاده می‌شود. جالب است بدانید هر دقیقه از یک ویدئوی فشرده‌ نشده‌ی فول اچ‌دی، ۷ گیگابایت فضا اشغال خواهد کرد و بنابراین یک فیلم دو ساعته در صورتی که فشرده نشده باشد ۸۴۰ گیگابایت حجم خواهد داشت.

 

تصور نکنید که کدک‌های صوتی و تصویری چیزی فراتر استفاده روزمره ماست. تمام فرمت‌های رایج و مشهور نظیر MP3 نیز کدک صوتی یا تصویری است. تنها با این تفاوت که این کدک‌ها به دلیل محبوبیت بسیار زیاد، بطور پیش فرض بر روی تمام نرم افزارها یا دستگاه‌های پخش موجود است. اما برای فرمت‌هایی که نوظهورتر هستند و یا دارای حق کپی رایت می‌باشند و کمپانی‌های نرم افزاری توان خرید امتیاز حق استفاده از آن‌ها را نداشته‌اند، باید کدک آن فرمت را از طریق بسته‌هایی که بالاتر لینک دانلود آن قرار داده شد دریافت و نصب کنید تا بتوانید از آن فایل صوتی یا تصویری که از این روش فشرده شده است، استفاده کنید. نسخه های HEVC x265 که ما در الماس مووی قرار میدهیم اینگونه هستند و پلیر های قدیمی قادر به پخش آنها نیستند لذا اگر در پخش این فایل ها مشکل دارید پلیر های به روز را از صفحه ی نرم افزارهای مورد نیاز دانلود کنید.

 

کدک فشرده سازی HEVC/H.265 یا x265 چیست؟

کدک H.265 که با نام مستعار HEVC سر واژه‌ی عبارت High Efficiency Video Coding و یا X265 نیز شناخته می‌شود، نسل جدید الگوریتم کدگذاری ویدئویی است که یک انقلاب عظیم در صنعت ویدئو استریم و شبکه‌های کابلی و نیز یک آپگرید بزرگ نسبت به کدک پیش از خودش یعنی کدک H.264 که با نام مستعار AVC سر واژه‌ی عبارت Advanced Video Coding شناخته میشد به حساب می‌آید.

هر ویدئو در حقیقت از تعداد زیادی عکس تشکیل شده که با سرعت پشت سر هم به نمایش در می‌آیند و نمایش پیوسته‌ی آن‌ها حس یکپارچگی ویدئویی را تلقین می‌کند. به این تصاویر در اصطلاح، فریم گفته می‌شود. بطور معمول ویدئوهای سینمایی و استاندارد مرسوم تصویر برداری دوربین‌های دیجیتال، 30 فریم بر ثانیه است. اما به هر میزان که تعداد فریم‌ها بالاتر رود، حس پیوستگی بیشتری در تصویر به وجود می‌آید به گونه‌ای که در ویدئوهای بالاتر از 120 فریم بر ثانیه، می‌توان افکت اسلوموشن را به وجود آورد.

کاری که الگوریتم‌های فشرده سازی کدک تصویری HEVC/H.265 و نسخه‌ی قدیمی آن یعنی کدک AVC/H.264 انجام می‌دهند این است که دو فریم متوالی را بررسی می‌کنند تا قسمت‌های کاملاً یکسان بین دو فریم را شناسایی کنند. سپس تنها آن بخشی که در فریم جدید تغییر کرده است را حفظ نموده و بخش‌های ثابت مانده از فریم قبلی را به فریم بعدی نیز اختصاص می‌دهند.

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

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

 

تفاوت کدک تصویری HEVC/H.265 و AVC/H.264 در چیست؟

تقریباً پایه و اساس عملکرد هر دو شیوه کدگذاری یکسان است اما HEVC/H.265 نسل جدید AVC/H.264 است پس کاستی‌های نسل قبلی در آن به شیوه چشمگیری برطرف شده و قابلیت‌های خوب آن نیز ارتقا یافته است. به عنوان مثال، در کدک AVC/H.264 هر فریم به ماکروبلاک‌هایی (Macroblocks) با ابعاد 16 پیکسل در 16 پیکسل تقسیم بندی می‌شود و برای هر ماکروبلاک، به دنبال اطلاعات مشابه در همان فریم یا فریم بعدی جستجو می‌شود تا در نهایت از داده‌های ماکروبلاک‌های با اطلاعات رنگی مشابه یکدیگر، تنها یک نسخه نگهداری شده و باقی ماکروبلاک‌های مشابه به اطلاعات ثبت شده‌ی همان یک مورد ارجاع داده شوند.

اما در کدک نسل جدید یعنی HEVC/H.265 ماکروبلاک‌ها با نام جدید Coding Tree Units شناخته می‌شوند که ابعاد آنها 4 برابر بزرگتر شده و از 16×16 پیکسل به 64×64 پیکسل رسیده است. این ارتقا دو مزیت دارد. نخست آنکه برای ویدئوهای با ابعاد بزرگتری که با پیشرفت تکنولوژی معرفی شده‌اند نظیر ویدئوهای 4K یا 8K، ابعاد بزرگتر واحدهای درختی کمک می‌کند تا کدگذاری در واحدهای 4 برابر بزرگتری انجام شود و برای ویدئوهای با ابعاد بزرگ مناسب‌تر باشد. و دوم آنکه همانطور که از نام “کدگذاری واحدهای درختی Coding Tree Units” مشخص است، در انکدینگ HEVC/H.265 تنها با 64 پیکسل در 64 پیکسل خالی مواجه نیستیم بلکه این بلوک حجیم، به تعدادی زیر بلوک با ابعاد 32×32 پیکسل، 16×16 و 8×8 پیکسل تقسیم می‌شود و یک رابطه درختی مشابه تصویر زیر میان بلوک اصلی و زیر بلوک‌ها به وجود می‌آید.

این عملکرد کمک می‌کند تا برای قسمت‌های کوچکتر واحدهای بزرگ 64×64 نیز (تا سقف 8×8 پیکسل) در خود فریم و فریم‌های قبلی و بعدی اطلاعات رنگی مشابه جستجو شود و اگر نمونه مشابهی یافت شد، با ارجاع دادن به آن بخش، از ثبت اطلاعات تکراری خودداری شود. این عملکرد دقت کدگذاری در هنگام فشرده سازی را آنچنان بالا می‌برد که برای انکد کردن ویدئو با فرمت HEVC/H.265 به 40% بیت ریت کمتری نسبت به فرمت AVC/H.264 نیاز است و این یعنی 40% کاهش حجم ویدئو بدون از دست رفتن جزئیات تصویر و یا حتی افزایش در جرئیات!

البته این موضوع تنها علت کیفیت بالای این کدک تصویری نیست. عملکرد کدک تصویری HEVC/H.265 بسیار پیچیده است. جهت شناسایی و پیش بینی کدهای رنگی پیکسل‌ها در X265 به 35 جهت در هر واحد رسیده است در حالی که این تعداد در کدک تصویری AVC/H.264 تنها 9 جهت است. برای درک کامل تمام جزئیات شیوه اجرای الگوریتم کدگذاری HEVC/H.265 کتاب الکترونیک HEVC: The New Gold Standard for Video Compression را دانلود و مطالعه کنید.

آیا کدک تصویری HEVC/H.265 باکیفیت‌تر است؟

با توجه به توضیحات فوق به صراحت باید گفت بله! کدک تصویری HEVC/H.265 در مقایسه با نسخه پیشین خود یعنی AVC/H.264 نه تنها به حداقل 40% نرخ بیت (Bit Rate) پایین‌تر نیاز دارد، بلکه با بهره‌گیری از قابلیت‌های اصلاح شده کدگذاری و فشرده سازی رنگ‌ها، از نویز رنگی بسیار کمتر برخوردار است و نتایجی با کیفیت تصویر بالاتر و خطای رنگی به مراتب کمتر نسبت به AVC/H.264 ارائه می‌دهد.

اما این نتیجه گیری به هیچ وجه بدین معنا نیست که هرکجا هر ویدئویی با انکدینگ HEVC/H.265 وجود داشت به معنی کیفیت بالای آن باشد. متأسفانه این قضیه در سایت‌های دانلود ایران بسیار رایج است که کدکننده ویدئو به دلیل پایین آوردن حجم ویدئو به منظور آپلود و دانلود سریعتر آن، تنظیمات کیفیت را به تشخیص نرم افزار واگذار نکرده است و با یک نرخ بیت مشخص (و معمولاً بسیار فراتر از سقف 40 درصد) اقدام به کدگذاری ویدئو با فرمت HEVC/H.265 نموده تا به نهایت کاهش حجم ویدئو دست یابد. اما با این کار به میزان بسیار زیادی از کیفیت تصویر کاسته شده و فیلم‌ها و ویدئوهای دریافتی از سایت‌های ایرانی، عملاًَ کیفیت تصویر از بین رفته‌ای دارند.

همچنین در پروسه‌ی انکدینگ یک ویدئو به ویژه فیلم‌ها، سریال‌ها یا مستندهایی که مستقیماً از روی دیسک‌های اورجینال بلوری با کیفیت بالا انکد می‌شوند، عامل مؤثر دیگری به نام عمق رنگ (Color depth) نیز در کیفیت نهایی تصویری تأثیر گذار است.

تأثیر عمق رنگ در انکدینگ فیلم

همانطور که پیش‌تر گفته شد، تکنولوژی‌های پیشرفته کدک تصویری HEVC/H.265 یک بخش از سهم باکیفیت بودن تصویر را بر عهده دارد و بخش مهم دوم، عمق رنگ (Color depth) است که کامل توضیح داده شد. باید به این مسئله اشاره کرد که اگر ویدئوی شما با عمق رنگ 8 بیتی انکد شده باشد، سقف رنگ‌هایی که در ویدئو به ثبت رسیده است 16 میلیون رنگ است و باقی رنگ‌هایی که در ویدئوی خام باکیفیت نسخه بلوری فیلم موجود بوده‌اند، در فرایند انکدینگ فیلم بطور کامل حذف شده و از بین رفته‌اند. در نتیجه مهم نیست که این ویدئو را بر روی یک تلویزیون یا مانیتور 16 میلیون رنگی تماشا می‌کنید یا 48 میلیون رنگی! ویدوئوی شما تنها 16 میلیون رنگ دارد و بر روی یک نمایشگر 48 میلیون رنگی نیز تنها قادر به نشان دادن همان 16 میلیون رنگ موجود در فریم‌های تصویری ویدئو است.

پس در اینجا مسئله تنظیم عمق رنگ در هنگام انکدینگ ویدئو مشخص می‌شود. انکدرهای بزرگ فیلم و سریال در جهان، معمولاً از نرم افزار رایگان HandBrake با تنظیمات اختصاصی خود استفاده می‌کنند. در این نرم افزار رایگان اما بسیار پیشرفته، شما می‌توانید تنظیم کنید تا در هنگام انکد کردن ویدئوهای خود با فرمت HEVC/H.265 بجای تنظیمات پیش‌فرض 8 بیتی، تنظیم عمق رنگ 10 یا 12 بیتی انجام شود.

باید خاطر نشان کرد که تنظیم عمق رنگ 10 یا 12 بیتی تنها زمانی کاربرد دارد که شما بخواهید یک ویدئوی بسیار باکیفیت فشرده نشده را انکد کنید. نه آنکه یک ویدئویی که قبلاً یک مرتبه با عمق رنگ 8 بیت (24 بیت) انکد شده باشد را اینبار با عمق رنگ 10 بیت انکد کنید. این کار کاملاً بی فایده خواهد بود چرا که ویدئوی منبع سقف 16 میلیون رنگ در آن موجود است و امکان ارائه یک نسخه با 10 بیت رنگ از آن غیر ممکن است. فراموش نکنید که ویدئوهایی که توسط دوبین‌هایی نظیر دوربین موبایل فیلم برداری شده‌اند، همگی توسط نرم افزار دوربین موبایل شما یک مرتبه با 8 بیت عمق رنگ انکد شده‌اند. مگر آنکه دوربین موبایل شما بسیار پیشرفته باشد و در تنظیمات آن قابلیت تنظیم عمق رنگ بالاتر موجود باشد و یا آنکه از یک دوربین دیجیتال با قابلیت ضبط تصاویر با عمق رنگ بالاتر تصویر برداری کرده باشید.

چشم انسان قادر به دیدن چه تعداد رنگ است؟

جالب است بدانید که چشم انسان تنها قادر به دیدن 10 میلیون رنگ است و از نمایشگرهای موجودی که در حال حاضر به عنوان تلویزیون، مانیتور یا صفحه نمایش تلفن همراه خود استفاده می‌کنیم، حدود 6 میلیون رنگ تولید شده توسط آن‌ها را قادر به مشاهده نیستیم. اما چرا با وجود این مسئله، نسل جدیدی از نمایشگرهای 30 میلیون تا 48 میلیون رنگی ساخته شده است که با عنوان نمایشگرهای True Color یا HDR معرفی می‌شوند؟

علت این مسئله این است که درست است که ما قادر به دیدن بیش از 10 میلیون رنگ نیستیم، اما به عنوان مثال در طیف رنگ زرد که ما قادر به دیدن آن هستیم، نمایشگرهای 16 میلیون رنگی (24 بیتی) قادر نیستند تمام آن طیف رنگ زردی که چشم انسان قادر به تماشای آن است را تولید کنند! به عبارت دیگر، این نمایشگرها طیف رنگ‌هایی را تولید می‌کنند که بخشی از آن‌ها در محدوده قابل مشاهده برای انسان نیست. اما، در همان محدوده‌ی طیف رنگی قابل مشاهده، قادر نخواهند بود تمام رنگ‌هایی که چشم انسان قادر به دیدن آن است را تولید کنند. و به همین دلیل در طیف رنگی قابل مشاهده (به عنوان مثال زرد، آبی، سبز، خاکستری و…) شکستگی‌های رنگی‌ای در تصویر به وجود می‌آید که به وضوح برای چشم انسان قابل مشاهده است.

اما نمایشگرهای True Color  اغلب (30 بیتی تا 48 بیتی و یا به عبارت صحیح‌تر 10 بیتی تا 16 بیتی)، قادر خواهند بود نه تنها طیف رنگ‌هایی ایجاد کنند که خارج از محدوده دید انسان است، بلکه در طیف مرئی و قابل مشاهده نیز تمام آن رنگ‌هایی که چشم می‌بیند را نیز تولید نمایند. و از این طریق، یک شیب رنگی (Gradient) کاملاً پیوسته و بدون شکستگی در تصویر به وجود آورند. به نمونه‌های زیر دقت کنید.

تأثیر عمق رنگ در انکدینگ فیلم

همانطور که پیش‌تر گفته شد، تکنولوژی‌های پیشرفته کدک تصویری HEVC/H.265 یک بخش از سهم باکیفیت بودن تصویر را بر عهده دارد و بخش مهم دوم، عمق رنگ (Color depth) است که کامل توضیح داده شد. باید به این مسئله اشاره کرد که اگر ویدئوی شما با عمق رنگ 8 بیتی انکد شده باشد، سقف رنگ‌هایی که در ویدئو به ثبت رسیده است 16 میلیون رنگ است و باقی رنگ‌هایی که در ویدئوی خام باکیفیت نسخه بلوری فیلم موجود بوده‌اند، در فرایند انکدینگ فیلم بطور کامل حذف شده و از بین رفته‌اند. در نتیجه مهم نیست که این ویدئو را بر روی یک تلویزیون یا مانیتور 16 میلیون رنگی تماشا می‌کنید یا 48 میلیون رنگی! ویدوئوی شما تنها 16 میلیون رنگ دارد و بر روی یک نمایشگر 48 میلیون رنگی نیز تنها قادر به نشان دادن همان 16 میلیون رنگ موجود در فریم‌های تصویری ویدئو است.

پس در اینجا مسئله تنظیم عمق رنگ در هنگام انکدینگ ویدئو مشخص می‌شود. انکدرهای بزرگ فیلم و سریال در جهان، معمولاً از نرم افزار رایگان HandBrake با تنظیمات اختصاصی خود استفاده می‌کنند. در این نرم افزار رایگان اما بسیار پیشرفته، شما می‌توانید تنظیم کنید تا در هنگام انکد کردن ویدئوهای خود با فرمت HEVC/H.265 بجای تنظیمات پیش‌فرض 8 بیتی، تنظیم عمق رنگ 10 یا 12 بیتی انجام شود.

باید خاطر نشان کرد که تنظیم عمق رنگ 10 یا 12 بیتی تنها زمانی کاربرد دارد که شما بخواهید یک ویدئوی بسیار باکیفیت فشرده نشده را انکد کنید. نه آنکه یک ویدئویی که قبلاً یک مرتبه با عمق رنگ 8 بیت (24 بیت) انکد شده باشد را اینبار با عمق رنگ 10 بیت انکد کنید. این کار کاملاً بی فایده خواهد بود چرا که ویدئوی منبع سقف 16 میلیون رنگ در آن موجود است و امکان ارائه یک نسخه با 10 بیت رنگ از آن غیر ممکن است. فراموش نکنید که ویدئوهایی که توسط دوبین‌هایی نظیر دوربین موبایل فیلم برداری شده‌اند، همگی توسط نرم افزار دوربین موبایل شما یک مرتبه با 8 بیت عمق رنگ انکد شده‌اند. مگر آنکه دوربین موبایل شما بسیار پیشرفته باشد و در تنظیمات آن قابلیت تنظیم عمق رنگ بالاتر موجود باشد و یا آنکه از یک دوربین دیجیتال با قابلیت ضبط تصاویر با عمق رنگ بالاتر تصویر برداری کرده باشید.

دانلود ویدئوهای X265 10bit

با فراگیر شدن تلویزیون‌های HDR و نمایشگرهای True Color دسکتاپ و موبایل در جهان، اخیراً انکدرهای بزرگ سینمایی اقدام به انتشار نسخه بلوری X265 10bit فیلم و سریال‌ها و مستندهای مشهور کرده‌اند که این نسخه‌ها در مقایسه با نسخه‌های منتشر شده پیشین، اغلب سبک‌تر اما با کیفیتی بسیار زیاد عرضه شده‌اند. وب‌سایت الماس مووی نیز اقدام به انتشار ویدئوهای X265 10bit مینماید. فراموش نکنید که نیازی نیست حتماً از تلویزیون HDR یا نمایشگر True Color برخوردار باشید. ویدئوهای 10 بیتی دارای 4 میلیارد طیف رنگی می‌باشند درحالی که ویدئوهای 8 بیتی مرسوم تنها از 16 میلیون رنگ برخوردارند! و این یعنی آنکه با مشاهده ویدئوهای منتشر شده 10 بیتی قادر خواهید بود تا حداکثر رنگ‌های قابل مشاهده توسط چشم‌تان را در تلویزیون یا نمایشگر خود مشاهده نمایید.

جمع بندی

برای پخش ویدئو های H.265 یا همان HEVC یا x265 در کامپیوتر های دسکتاپ یا لپتاپ ها ، دستگاه شما باید سخت افزار مناسب برای کدگشایی فایل های HEVC را داشته باشد. اما اگر سخت افزار شما این قابلیت را نداشت جای نگرانی نیست. چون به لطف قدرت پردازشی بالای CPU های کامپیوتر ها شما میتوانید با نصب نرم افزار های مخصوص، بصورت نرم افزاری فایل های HEVC را کد گشایی کنید و آنها را تماشا کنید. به این منظور میتوانید نرم افزار هایی مثل KM Player ، VLC Player ، Pot Player  و … را نصب کنید. برای دانلود میتوانید به صفحه ی نرم افزار های مورد نیاز مراجعه کنید.

برای پخش ویدئو های H.265 یا همان HEVC یا x265 در موبایل ها ، بهتر است تلفن همراه شما بصورت سخت افزاری از HEVC پشتیبانی کند. اغلب سخت افزار های تولید شده پس از سال 2014 از HEVC پشتیبانی میکنند. درصورتی که تلفن همراه شما بصورت سخت افزاری قادر به کدگشایی نباشد (قدیمی باشد ) با نصب نرم افزار هایی مثل MX Player میتوانید به تماشای فیلم های HEVC بپردازید اما این کار میتواند برای شما دو مشکل ایجاد کند. مشکل اول این که مصرف باتری بالاتری خواهد داشت و مشکل دوم نیز این است که اگر پردازنده ی گوشی شما ضعیف باشد فیلم بصورت لگ دار پخش خواهد شد و با قطع و وصل شدن های مکرر و هنگ کردن گوشی مواجه خواهید شد. پس بهترین حالت این است که گوشی شما جدید باشد و از MX Player استفاده کنید. برای دانلود نرم افزار های پخش HEVC در موبایل میتوانید به صفحه ی نرم افزار های مورد نیاز مراجعه کنید.

برای پخش ویدئو های H.265 یا همان HEVC یا x265 در تلویزیون ها ، تلوزیون شما باید بصورت سخت افزاری قابلیت پخش ویدئو های HEVC را داشته باشد. (اغلب تلویزیون های جدید این ویژگی را دارند.) میتوانید یکبار امتحان کنید یا مشخصات تلویزیون خودتان را در اینترنت و سایت شرکت سازنده جستجو کنید تا از این مورد اطمینان پیدا کنید.

 

دانلود اپلیکیشن اندروید الماس مووی
کانال تلگرام الماس مووی