All But Reality

Imagine a catchphrase here

Simple template. Background and Customization by Shihab Elagib. Powered by Blogger

April 22, 2015

عن هارديسك ممتليء والقفز بين صيغ الصوتيات والمرئيات.

من المواقف التي تمر على اي مستخدم للحواسيب -من صغيرتها الى كبيرتها- هي امتلاء السعة التخزينية للجهاز بالكامل. تلك اللحظة التي "تَحْمَر" فيها عدادات التخزين في الويندوز و يبدأ النظام في عرض الانذار المعروف: "Low Disk Space!"
الكثير من الناس تمر عليهم هذه اللحظات، لكن هنالك فئة واحدة تؤثر فيها هذه الحالة معنوياً اكثر من البقية: امثالي مِن مَن لا يستطيعون التخلي عن ممتلكاتهم [الرقمية]...



ملحوظة: "مجلد" حاسي بيها كلمة غريبة غريبة ، فحأستخدم "فولدر" بدلا عنها :|

جهازي الحالي به حوالي 5 تيرابايت موزعة على 3هارديسكات online (بالدارجي: موصلة)، بالإضافة لعدة وحدات اخرى offline (بالدارجي برضو: ما موصلة). على الرغم من كل هذه السعة التخزينية الا ان عادتي في الاحتفاظ بالمواد الرقمية التي تمر على جهازي ادت الى تراكمها لتملأ كل هذه الوحدات. فمجموع فولدرات الصور، المستندات، الصوتيات والفيديوهات (عدا الافلام، التيوتوريلات، الvideo captures وما شابهها) قد وصل حجمها لما يتعدى ال400GB! اما احد الفولدرات المخصصة لتخزين دروس برامج الCG المختلفة فقد تخطى حجمه ال100GB. الافلام والمسلسلات؟ >1TB. القيمز؟ فولدر قيمز الSteam المثبتة حاليا تخطى ال400GB، دعك من تلك المتحصل عليها بطرق... غير قانونية >_>
بالمناسبة، هذه الارقام فقط للموجود داخل الوحدات الonline :|

لكن ربما كانت اقل تلك الملفات جميعها كفاءة في استهلاك المساحة التخزينية، هي تلك الـScreenshots والVideo Captures التى كنت اقوم بتسجيلها اثناء لعبي للقيمز المختلفة. فقديما كنت استخدم برنامجاً واحداً للعمليتين: FRAPS. وعلى الرغم من انه من اشهر البرامج لهذا الامر، الا ان لديه عيب رئيسي كبير في تسجيل الفيديوهات هي انه لا يقوم بعملية "ضغط" تذكر للفيديو!

ملفات المرئيات والصوتيات الرقمية قلما تأتي في صورتها الأصلية (كـRaw Data) بل غالبا ما تأتي مضغوطة بخورازميات مختلفة لتنتج الملفات التي يمكن لجميع الاجهزة العادية استخدامها. الملفات الRaw عادة ما تكون اكبر الصور حجما لأي ملف ميديا، وفي الغالب الأعم لا يمكن استخدامها الا في برامج مخصصة لها عادة ما يكون الهدف منها تحويلها لصيغ اخرى يمكن استخدامها بصورة اكبر. 
Formats الصوتيات والمرئيات لا تعد ولا تحصى، لكن اسماء قليلة هي التي نالت نصيب الاسد من السوق، فللصوتيات نذكر الصيغة المعروفة الMP3 ذات الجودة المتوسطة، والAAC والAC-3 ذاتي الجودتين العاليتين، والFLAC ذات الجودة -التي يفترض ان تكون- الاقرب للكمال (مقارنة بمصدر الملف الصوتي).
اما بالنسبة الفيديوز، فالموضوع معقد بعض الشيء. فعلى الرغم من ان الفيديوز لديها فورماتس خاصة بها، الا ان حوجتها للصوتيات للعمل معها ادى لاستحداث ما يعرف بالحاويات (containers، بالاضافة لأسباب اخرى)، وهذه هي الـ"صيغ" التي تظهر للمستخدم العادي عبر متصفحات الملفات. هذه الحاويات اشهرها واكثرها استخداماً حاليا هي الـMP4، AVI و الـMKV. ولعلكم تذكرون قديماً انتشار حاويات الRM/RMVB (والحمدلله انها اندثرت :|)، اما لأغراض البث عبر الشبكة (streaming)، فالـFLV هي الستاندرد.
الحجم الكلي و"جودة" الفيديو يحددانهما صيغة ملف الفيديو نفسه، وهنا نحن نتحدث عن اسماء مثل الH.264 AVC والتي تعتبر حاليا اكثر الصيغ انتشاراً وأكثرها دعماً من قبل أجهزة العرض. ونذكر ايضا صيغ مثل الـMPEG2 (الستاندرد الام لل264) والVP8/VP9 (ستاندري قوقل اللتان تحاربان لإستبدال الH.264 كالخيار الاول للبث عبر الشبكة)، والH.265 HEVC، التحديث الأخير لل264. لكل من هذه الصيغ محاسن ومساوئ عند مقارنتها ببعضها البعض. فالـVP9 مثلا تمتاز بكفاءة عالية (جودة مقابل bitrate، المزيد عنها لاحقا) مقارنة بالـh.264، لكن الاخيرة تمتاز بدعم واسع متضمنة تسريع عرض عبر الهاردوير (hardware acceleration) في ما يمكن ان يكون جميع الاجهزة المصنعة في السنين الاخيرة. 

الصيغ عادة تقسم لنوعين حسب اسلوب الضغط فيهما: Lossy formats، و lossless formats. اولاهما، الصيغ ذات الـ"ضغط المنقوص" (حسب ويكيبيديا، ما عارف ترجمتها شنو ففقعتها منهم >_>) او الlossy formats هي التي تستخدم طرق ضغط ينتج عنها فقدان لبعض البيانات من المادة المضغوطة، ما قد يعني نقصان في جودة الفيديو او الصوت او الصورة النهائية. اما الثانية، الضغط "غير المنقوص"، ففيها تضغط البينات بصورة تجعل النسخة مفكوكة الضغط منها (عند التشغيل، مثلا) مطابقة بالكامل للأصلية قبل الضغط. وكما يتوقع فإن التقنيات الlosslessعادة اكبر حجما من مثيلاتها الlossy.
كمثال للنظامين، فإن كلا من الPNG للصور، الh.264 (عند استخدام اعدادات معينة) للفيديوهات، وال FLAC للصوتيات تعتبر انظمة ضغط lossless. وبالمثل فإن صيغ مثل من الJPEG، الRMVB و الmp3 تعتبر صيغ lossy.
ذكرت اعلاه ان من مميزات الVP9هي الكفاءة العالية نظراً لإرتفاع نسبة الجودة مقابل الBitrate. الbitrate هو -ببساطة- اعتبار لكمية الbits لكل ثانية من الفيديو (او ملف الصوت). الفيديو مكون من عدة صورة (فريمات frames) متتالية، والصورة الواحدة عبارة عن نقاط ملونة (بكسلات pixels)، واللون رقميا (في الغالب) يمثل بثلاث الوان: الاحمر، الأخضر والازرق فيما يعرف بنظام الRGB. لكل لون تخصص مجموعة من الbits، لذا -وحسب ما درست قديما في ما يعرف بالتباديل والتوافيق- فإن زيادة عدد هذه البتس لأي لون ينتج عنه زيادة خرافية في كمية الالوان التي يمكن انتاجها من مزج هذه الالوان الرئيسية.
كمثال، نظام الالوان الحقيقي (True Colour) يمنح كل لون 8بتس لما مجموعه 24 بت للكل بكسل (Bits Per Pixel, bpp، يعرف ايضا بالbitdepth او الcolour depth). نظريا يمكن توقع حجم فيديو بضرب معدل تغير الاطارات (عدد الصور في الثانية) في طول الفيديو للحصول على عدد الاطارات الكلي، ومن ثم ضربه في دقة الصورة (resolution) للحصول على عدد البكسلات الكلي، ومن ثم ضربه في عدد البتس لكل بكسل للحصول على الحجم الكلي (بالbits). الbitrate في هذه الحالة سيكون ناتج قسمة حجم الفيديو على طوله. ولكن، هذه الطريقة لا تعطي حجما فعليا للفيديو لسبب بسيط جدا: ليس كل فريم من الفيديو يأتي بمجموعة بتس حصرية لكل بكسل فيه. اتذكرون وظيفة الformats اعلاه؟ ما ينتج عن هذه العملية تغير في كمية الbits لكل فريم، لذا اتخذ الbitrate النهائي (او القيمة المتوسطة في حالة كونه متغيرا) كاحدى القيم الرئيسية عند التحكم في جودة الفيديو.


ليست جميع خوارزميات الضغط سواء، فالـh.264 مثلاً -بحكم تصميمها لتستهدف البث عبر الشبكة- تأتي بكفاءة ضغط عالية، لذا تجدها تعطي جودة ممتازة مقابل bitrate (وبالتالي حوجة bandwidth) اقل من الصيغ الاقدم كالـMPEG2، بينما الصيغ الحديثة مثل الVP9 و الH.265 زيدت فيها الكفاءة لدرجة تمكن من انتاج نفس الجودة في ما يقارب نصف الbitrate الذي تحتاجه في الh.264. ما يوازي فعليا نصف الحجم الكلي لنفس الجودة المستوعبة. لهذا السبب ستجد قوقل تدفع نحو تبني الVP9 في خدمة Youtube بدلا عن الh.264 المستخدمة حالياً.
يجب ايضا ذكر ان عمليتي ضغط او تشفير (encoding) وفك تشفير (decoding) الصيغ ذات الكفاءة الحجمية العالية تحتاج لعمليات معالجة معقدة خصوصا عند التشفير. فتشفير فيديو 1080p لصيغة h.264 بbitrate متوسط حوالي 40Mbps على معالج i7 4770k قد يحتاج ~20 ثانية عمل لكل ثانية واحدة من الفيديو. مما يجعل عملية التشفير اثناء الالتقاط (كمثال، تشفير فيديو مسجل اثناء اللعب) مستحيلة بإستخدام السوفتوير فقط (او بلغة اخرى: التشفير على البروسيسر). لذا استحدثت طرق مثل تقنية الShadowplay من انفيديا، حيث تستخدم الشركة وحدة معالجة مخصصة لهذه العملية موجودة في بطاقاتها الصورية تمكن من تشفير فيديو بالمواصفات اعلاه بسرعة توازي او تفوق السرعات الاعتيادية لعمل القيمز (عادة 0.0167ثانية لكل اطار).


ما فائدة هذه المعلومات لي؟ اتذكرون عندما ذكرت اعلاه اني من مدمني استخدام FRAPS لتسجيل فيديوهات وصور اثناء لعبي للقيمز؟وكما ذكرت اعلاه ان تشفير الفيديو على البروسيسر بطرق تشفير معقدة عملية غير ممكن اثناء اللعب، لذا يستخدم برنامج فرابس صيغة خاصة به تسمى FPS1. هذه الصيغة تستخدم اقل تشفير ممكن، لذا عادة تجد جودتها لا يمكن تمييزها من المصدر، ولكن عبيها انها تأتي بـbitrate عالي جداً قد يصل ويفوق ال500Mbps. اي ان فيديو واحد مدته دقيقة واحدة سيكون حجمه 3.75GB! او لجعلها اقرب لإستخدامكم: فايل لفلم Inception ذو ال148دقيقة سيأتي بحجم 555GB!
بدون الدخول في كون محاولة تسجيل فيديو بهذا الbitrate تضغط على انظمة التخزين بصورة كبيرة جدا!
قديماً عندما بدأت في محاولة ضغط الفيديوهات التي سجلتها بواسطة البرنامج كان مجموع ما سجلته حوالي 500GB، تمكنت من ضغط حوالي 400GB منها وتشفيرها بصيغة الH.264 (وحاوية MP4) لناتج اقل من 15GB! اي كفاءة كلية اكثر من 96% لصورة يحتاج ملاحظة الفرق بينها وبين الاصل لفحص وتدقيق لكل اطار!
في الاسبوع الماضي قمت بتجربة محاولة ضغط الفيديوهات المتبقية، هذه المرة حاولت ان يكون الناتج مشابها بالكامل للأصل. في احدى المحاولات، وجدت اني احتاج حوالي 60~70 Mbps عند ضغطها لصيغة الh.264، اما عند استخدام الh.265 فتوصلت لنفس الجودة عند استخدام حوالي 30Mbps. قد تكون قيمة كبيرة جداً مقارنة بالقيم المستخدمة عادة، لكن عند الاخذ في الاعتبار اني لا زلت سأكسب مساحة تفوق ثلثي مساحة الفيديو الاصلية مع الاحتفاظ بنفس الجودة، فهذه لا تزال صفقة رابحة!


بالطبع، لم تكن فيديوهات FRAPS وحدها ذات الكفاءة المتدنية في استهلاك المساحة التخزينية، فمثلما كنت معتادا على تسجيل الفيديوز، كنت معتاداً ايضا على التقاط صور (screenshots) اثناء اللعب، ونسبة لاسباب عديدة (اولها جهلي بمفهوم الكفاءة في صيغ التسجيل) جعلني استخدم صيغة الBMP في تسجيل الصور.
صيغة الBMP (او الbitmap) احدى ابسط صور حفظ الصور (عربي دة؟)، الصورة حرفيا تُحفظ بكسل بكسل بأقل ضغط ممكن (وعادة بدون اي ضغط). أتذكرون معادلة حجم الفيديو اعلاه؟ طبقها هنا بدون معدل الاطارات. حجم الصورة في اغلب الاحوال يساوي الcolour depth (وكما ذكرنا فإن الtrue colour يستخدم 24بت لكل بكسل)‍ مضروب في الدقة.
ما يعني صورة 1920*1080 بعمق الالوان الحقيقي حجمها  يحسب بـ 1080*1920*24 ما يساوي 49766400 بت. او ما يعادل حوالي 6 ميقابايت لكل صورة. للمقارنة، صورة PNG (اخترتها عشوائيا من صور كانت BMP ضغطها بنفسي) تأخذ حوالي 1.3ميقابايت. 
الBMP قد يكون virtually lossless بكل الصور، لكن حجمه الكبير -غير استهلاكه للمساحة- يجعله غير عملي للعرض حتى. اذا حاولت فتح فولدر به صور BMP كتيرة في الويندوز مثلاً الهارديسك سيجاهد ليحمل الthumbnail التي سيعرضها الfile explorer فقط، دعك من الصورة نفسها! 
على الجانب الاخر، الPNG من المكن يكون lossless في اعدادات عالية، مع احتفاظه بإمكانية ضغط البيانات بصورة كبيرة. وكما في خوارزميات ضغط الفيديوهات المعقدة فإن ضغط وعرض صيغ مثل الPNG تطلب قدرة حوسبية اكثر من الBMP، الا ان بساطة تركيب الصورة الواحدة مقارنة بالفيديو يجعل من هذه القدرة -نسبيا- ضئيلة جدا تكاد تكون غير ملاحظة في زمن فيه يأتي اتفه حاسوب مكتبي بنواتي معالجة وقدرة تتعدى ال10 الاف عملية حوسبية في الثانية. 


عملية جمع وتخزين مكتبة رقمية خاصة بك ليست عملية بسيطة، فمعرفة اساسيات الصوتيات والمرئيات تصبح ضرورة قصوى هنا. ومحاولة المحافظة على الميزانية المصروفة على الهاردوير المحتوى على هذه المكتبة منخفضة تستوجب مراعاة لإستخدام اكثر السبل كفاءة في تخزين واسترجاع محتويات هذه المكتبة.
 لكنها ايضا ليست بالضرورة عملية معقدة، فمعرفة الفروقات بين الصيغ واي الصيغ افضل لإستخدامك عملية صعوبتها لا تتعدى استثمار ربع ساعة في قوقل. اما القفز بين هذه الصيغ فلا يتعدى استخدام برنامج تحويل صيغ قد لا تتعدى اعداداته نوع الصيغة المطلوبة و الbitrate الذي ترغب بإستخدامه. اما وسائط التخزين فهي اكبر وارخص بنسبة وقدرها منها قبل 5 اعوام، فليس من الصعب ان تتحصل على 3TB من سعة التخزين في مقابل اقل من ~$150. وبالمثل، فإن انتشار تقنيات الـhardware acceleration و ارتفاع متوسط قدرة المعالجة، بالإضافة للدعم واسع النطاق للمقاييس المختلفة يجعل من عملية عرض هذه المحتويات ابسط ما يكون. 
قد لا تكون الاكثر كفاءة، لكن عملية تكوين يوتيوبك الخاص ليست بالمستحيلة.
على الهامش:
البرامج المستخدمة في القفز بين الصيغ:
للفيديو:
-FormatFactory. توقفت عن استخدامه لعدم دعمه لصيغة الH.265 (حتى النسخة التي كنت استخدمها) بالإضافة لإكتشافي لبديل افضل في برنامج:
-Handbrake. بالإضافة لدعمه لصيغة الh265، البرنامج يمتاز بواجهة نظيفة، بسيطة وعملية. كما انه يستطيع الاستفادة من تقنية الQuickSync الموجودة في معالجات الاجيال الاخيرة من انتل لتسريع عملية التشفير بصورة كبيرة جدا! وان كانت تأتي على حساب الجودة.

للصور: 
-Advanced Batch Image Converter (ABIC) وان كانت تجربتي مع ضغط الصور حديثة، الا ان هذا البرنامج استوفى جميع احتياجتي واهمها ضغط مجموعة كبيرة من الصور (اكثر من 2000)