الحين نبدأ ندخل في اللب شوي ههههملحوظة بس قبل لا نبدأ، الأزرار اللي تحمل اسم « Enqueue » جنب كل من الفيديو والصوت في الواجهة الرئيسية، هذي إذا كنت تبي تشتغل يديوي، يعني لو تبي تسوي ضغط للصوت وحده أو الفيديو وحده أو ما إلى ذلك، المهم هي تضيف لك الشغلة اللي اخترت بس، ما تروح تضيف لك كل شء تلقائي.بس للأسف، أنا ما عندي تحديث الميقوي ، يعني الخيارات اللي موجودة هنا في الدرس ممكن ما تكون مرتبة على حسب التحديث الجديد للأسف، بس لما تلاقي خيار ما فهمته، دور عليه هنا، بتلاقيه ان شاء اللهالحين اجا دور زر ال Config اللي جنب الفيديو، هذا للقيام بالاعدادات يدويا بدل اختيار الاعدادات الجاهزة،
--------------------------------------------------------
Mode:
*****************************
أولا لازم نعرف إيش هو الBitRate(تردد البيانات)، الBitRate هذا هو بكل بساطة كمية المعلومات (البيانات) المخزنة في كل ثانية من الفيديو، وهذا نفهم منو إيش؟؟ نفهم منو أنه كل ما كان ال Bitrate كبيرا كلما كان الحجم كبيرا، والجودة عالية أيضا.(بنتوقف عند هذا الحد حاليا، بنتوسع أكثر بعد شوي)
هذي بتختار النمط اللي رح يتبعه الكوديك في ضغط الفيديو، كل نمط عنده إيجابيات وسلبيات كما يلي:[*]Single Pass - Bitrate: وهو يقوم بضغط الفيديو مرة واحدة(SinglePass) مع الحفاظ على التردد (Bitrate)، بالعربي يعني..كل فريم من الفيديو رح تكون فيه نفس كمية البيانات المخزنة كباقي الفريمات[*]Single Pass - Quantizer: أيضا يضغط الفيديو مرة واحدة، لكن هذه المرة باستخدام Quantizer(المُقَسِم)، ايش هذا ثاني؟ طيب المقسم هذا عمله بسيط، أولا ذكرنا قبل شوي "البيانات"، هالبيانات عبارة عن إيش؟ البيانات هذه بتكون عبارة عن أرقام وبس، بناخذ كمية قليلة من هالبيانات حتى نشوف كيف يعمل هالمُقسم
230, -100,700,1, 0, -1510, 57
هذا بس مثال صغييير مقارنة البيانات الي بتكون في الواقع (مثلك أنت بالنسبة للكرة الأرضية ههه)،
طيب شفتو أن هذي أعداد صحيحة نسبية (infintiy,+infinity-)، وكلما كانت هه الأعداد كبيرة فبطبيعة الحال...(طبيعة الحال إيش؟ ها؟ خخخخخ)... بطبيعة الحال الحجم بيكون كبير، طيب ايش هو دور هالمُقسم بالظبط؟
همممم.... مو من اسمه مبين؟ المقسم (Quantizer) هذا بيقوم بتقسيم هذه الأعداد على نفسه، أو بالأحرى، هذا اللي يسويه مبدئيا (في طرق بتكون فيها عمليات مختلفة قبل القسمة)، المهم، دوره أنه رح يقسم لنا هالأعداد على نفسه، وكلما كان المقسوم عليه كبيرا كلما قل العدد صح؟ <<قلبها درس رياضيات هههه
نفترض أننا اخترنا 100 في ال Quantizer (لو اخترتها في الواقع، الفيديو حقك رح يطلع زي زفت واكثر كمان)، المهم، اخترنا 100 حتى يسهل علينا فهم القسمة، طيب نسوي هالقسمة ونشوف:
قبل
230,-100,700,1, 0, -1510, 57
بعد
1,7,0,2, 0, -15, 0
عملية قسمة بسيطة ^^، لا شك لاحظتو 57 صارت 0 رغم 50/100 = 0.5، طيب احنا قلنا أعداد نسبية، الفاصلة مو مسموحة، بياخذ الجزء الصحيح بس ^^ << كفانا رياضيات الله يرحم والديك
طيب هذا باختصار كان دور الQuantizer << كل هذا وتقول اختصار بعد؟ -__-[*]Single Pass - Quality: هذا كمان يسوي SinglePass، بس يعتمد على عامل الجودة (Quality Factor)، ايش يعني بالضبط؟ طيب احنا لسه شفناالمُقسم (Quantizer)، فهذا العامل متناسب عكسيا مع الQuantizer، ايش يعني؟ هممم...طيب لو اخترنا مثلا 90 في عامل الجودة، فكأنما اخترنا100-90 = 10 في عامل الجودة، طبعا النتيجة بتكون واحدة[*]Two Pass: أهو وصلنا لأحسنها
، مين يقول لي ايش هو الشيء المشترك بين الطرق اللي مرت للتو؟ ... ها؟
كلها تطبق نفس التغيير على كل الفريمات في الفديو، الشيء الي ما يسويه ال Two-Pass فما فوق (Three, four,...., Hundred) طيب ايش اللي بيحدث بالضبط؟ اللي يصير هو أن الكوديك بيمر المرة الاولى على الفيديو، بيسوي له مسح (مو حذف ههه، مسح = scan )، هالمسح هذا بيعرف فيه الكوديك خصائص كل فريم في الفيديو، وبيشوف أي فريم يحتاج بيانات كثيرة، وأي فريم يحتاج بيانات قليلة، يعني السالفة ما صارت ماشية على الفريمات كلها <<مو نظام اشتراكي هههه
،
صار كل فريم ياخذ حصته بلا زيادة بلا نقصان، وهذا ما يسمى بال VBR=Variable Bitrate) وكذا بيحاول الكوديك تقسيم البيانات (الكمية المفروض تواجدها في آخر المطاف على الفريمات على حسب الاستحقاق حتى نحصل على الحجم المراد ، ويقوم بتخزين هذه البيانات في ملف *.stats حتى يقوم بتطبيقها في الPass الثاني.[*]Three Pass: مثله مثل الTwoPass، فقط يزيد الضغط مرة ثالثة لمحاولة الحصول على نتائج أفضل
--------------------------------------------------------
Quantizer:
*****************************
زي ما قلنا، كلما كان كبير كلما كان الحجم قليل، والجودة ضعيفة كذلك.
--------------------------------------------------------
Quality:
*****************************
هنا العكس، كلما كانت القيمة كبرة كلما كانت الجودة كبيرة والحجم أكبر.
---------------------------------------------------------------------------------------------------
B-Frames:
*****************************
أها، الحين دخلنا للمعركة ههههه، من الصبح واحنا قاعدين نقول فريم ما فريم، وشو هي الفريمات بالضبط؟ الفريم بكل بساطة هو صورة، الفيديو مثل ما تعروفوا هو مجموعة من الصور واحدة ملاحقة اللي وراها وماشيين عالكرنيش بياكلوا أيسكريم،
الفريمات هذي ثلاث أنواع، ال KeyFrames وتعرف أيضا بال I-Frames و ال B-Frames، وأخيراً ال P-Frames
ال Key Frame هو عبارة عن صورة بكامل بياناتها، يقوم الكوديك عندة بقرائتها دون الاعتماد لا على الفريمات التي تسبقها ولا على التي تليها، فكروا فيها كأنها أصل لمعلم يتم الاعتماد عليه لعرض ما يليها من الفيديو، هالفريمات كلما كانت كثيرة في الفيديو كلما كانت الجودة خارقة، لكنها أقل الفريمات قابلية للضغط، وبالتالي كلما كانت كثيرة كلما كان حجم الفيديو كبيرا
،
هالفريمات بتكون عادة في الأمكنة التي يتغير فيها المشهد في الفيديو بشكل ملحوظ فجأة: مثلا تكون تطالع أنيمي الأبطال قاعدين يحششون في عز النهار ، وفجأة يقلبوا الصورة ليل،عند هذا المشهد بيكون هناك Key-Frame.
ال P-Frames دورها هو احتواء التغييرات اللي حدثت منذ ال Key-Frame اللي قبلها، كتغير الألوان وما إلى ذلك حتى يتم عرض الفيديو، كُلٌ من هذا النوع من الفريمات يقوم بالاشارة إلى نفسه، أو الفريم الذي يليه: سواءأكان P-Frame ثاني، أو Key-Frame، << شو يعني يشير إليه؟ ،
يعني بيخزن الفرق بينه وبين الفريم الثاني من ناحية المشهد (كالألوان مثلا)، أهو الحين ممكن نفهم ليش كلما كانت الKey-Frames كثيرة كلما زادت الجودة، لو فكرنا شوي، ال P-Frame بيخزن الفرق بينه وبين فريم ثاني صح؟، طيب لو خزن الفرق بينه وبين فريم أساسي(key_frame) (اللي قلنا عليه أنه يخزن الصورة بكامل جودتها)، هذا يعني أن الاختلاف رح يكون قليل وبالتالي اختلاف قليل جدا في الجودة، بمعنى آخر المحافظة عليها، ولو خزن الفرق بينه وبين P-Frame؟ (اللي هو نفسه معتمد يمكن على P-Frame ثاني
) هنا المصداقية بتقل ولا لا؟
، والجودة إيش بيصير لها؟ أكيد بتقل ههه
ال B-Frames: هالفريمات ميزتها أنها تشير إلي الفريم الذي يليها والذي قبلها سواء أكان Key-Frame، أو P-Frame، (ما تشير إلى فريمات من نفس نوعها إلا في حالة القيام بخيار خاص بنشوفه بعد شوي) ، واكيد بما أنها تعتمد على الفريم اللي قبلها واللي بعدها، فهي الأكثر قابلية للضغط، لأنها الأكثر حملا للبيانات، همممم... نوضح أكثر بمثال،
ناخذ key-frame، نفترض كمية البيانات 100، إجا وراه P-Frame الفرق بينه الفريم الأساسي 20 أي أن كمية البيانات التي يحمل هي 100-20 = 80، واجا ورا هالفريم P-frame ثاني الفرق بينهم 10 أي بياناته هي 80-10 = 70 أي لدينا
(KF(100)----> P-Frame(20)----> P-Frame(10 ==¦¦>> الحجم الكلي للفيديو 100+20+10=130
نشوف الحين بال B-Frames ^.^
أنا عوض الفريم الذي بالوسط رح أحط B-Frame، وشوفوا ايش رح ايصير
(KeyFrame(100)----> B-Frame(15) ----> P-Frame(10 ==¦¦>> الحجم الكلي للفيديو 100+15+10=125
فهمتوا من وين جات ال 15؟ 20+10 = 30 صح؟ يعني الفرق بين الفريم الأول والفريم الثالث ثلاثين، فال B-Frame اجا في وسط التغيير بالضبط حتى يكتفي بقيمة واحدة (صغيرة) تشير إلى الجهتين ^^(ضرب عصفورين بحجرة واحدة)
أتمنى تكون السالفة مفهومة
--------------------------------------------------------
Reference Frames:
*****************************
هي ال Key-Frames اللي تكلمنا عنها قبل شوي، لا تكثروا منها لأن حجم الفيديو بيكبر كثير، اختاروا من 3 إلى 5 (اللي ينصح بيه المختصون في هالمجال)، وبما أنه هالفريمات كما قلنا قبل شوي تكون غالبا عند تغير المشاهد الملحوظ، يستحسن الزيادة من القيمة شوي بالنسبة للأنيمي لأنه تقريبا الحلقة كلها تكون ماشية من دون تغير كبيير في المشاهد من ناحية الألوان، من 6 حتى 8 تكفي في هذه الحالة
--------------------------------------------------------
Loop Filter:
*****************************
هممممم...طيب أنتو تعرفون أن نظر الانسان محدود صح؟ ما يشوف تحت الأشعة الحمراء، وما فوق البنفسجية خخخ<<شدخل
،
طيب حالة هالخيار تعالج مشكلة أخرى تخص نظر الانسان، وهي أن بعض الأحيان يمكن تحمل فيديو و يظهر لك أن فيه مربعات صغيرة تظهر على حدود الرسوم ، أو العكس، ممكن يظهر لك الفيديو كأنه ما فيه حدود للرسوم :P (الصورة باااهتة)، دور هذا الخيار هو محاولة اصلاح هالمشكلة![]()
--------------------------------------------------------
Alpha/Beta:
*****************************
هذه هي الخيارات الي بتعدل عليها حتى تتحكم في الLoop Filter : ال Alpha يتحكم في زيادة (قيمة موجبة) أو تقليل (قيمة سالبة) المربعات اللي تكلمنا عنها، ال Theshold بيتحكم في مدى اعتبار الكوديك x264 لمنطقة أنها تحتوي على هذه المربعات أم لا، كل ما زادت القيمة كلما كثرت المناطق التي سيطبق عليها الكوديك التأثير، وكلما كانت سالبة، كلما قلت المناطق التي يعتبرها الكوديك تحتوي على هذه المربعات
--------------------------------------------------------
Direct Mode:
*****************************
الخيار هذا بيزيد من فعالية الضغط، يستحسن اختيار auto
--------------------------------------------------------
Bias:
*****************************
هذه الخاصية بتحدد مدى تتابع استخدام ال B-Frames، كلما ارتفعت القيمة زاد استخدامه ال B-Frames، لو تم اختيار القيمة 100، فكأنما لم تختر الخاصية Adaptive، لن تكون الخاصية مفعلة إلا عند اختيار B-Frame واحد على الأقل.
--------------------------------------------------------
Adaptive:
*****************************
تسمح هذه الخاصية للكوديك x264 بأن يقوم بنفسه باختيار عدد ال B-Frames التي سيطبقها على حسب الحاجة إلى ذلك (لن يتجاوز القيمة التي اخترتها في عدد ال B-Frames)
--------------------------------------------------------
Pyramid:
*****************************
يالله ارجعو شوفوا لما تكلمنا أول مرة عن ال B-Frames، تتذكروا أننا قلنا ال B-Frames لاتشير إلا لفريمات من نوع P-Frames أو Key-Frames، وقلنا في حالة خاصة صح؟ أهي الحالة الخاصة جائت :P، هالخيار بيسمح للB-Frames بالإشارة إلى فريمات من نفس نوعها، أي أن الضغط رح يزيد أكثر ;) (لازم تكون اخترت في عدد ال B-Frames على الأقل 2 حتى يتاح لك هذا الخيار)
--------------------------------------------------------
RDO:
*****************************
هذا الخيار بيخليك تستفيد من الخيارات اللي اخترت أقصى استفادة ممكنة للحصول على أقصى جودة مع الحفاظ على الحجم أو الBitrate الذي حددته، لكن مع زيادة رهيبة في الوقت اللازم للانتهاء من الضغط
--------------------------------------------------------
Weighted Prediction:
*****************************
هذا الخيار يزيد من دقة حساب الأمكنة التي يجب استعمال ال B-Frames فيها، بذلك يزيد من الدقة في ضغط الفيديو.
--------------------------------------------------------
Bidirectional M.E.:
*****************************
هذا أيضا يزيد من دقة حساب الأمكنة التي يجب أن تكون فيها ال B-Frames لكن باعتماده في هذه الحالة على تغير المشاهد ما قبل وما بعد كل B-Frmame، <<يعني وقت أكثر![]()
--------------------------------------------------------
Scene Cut:
*****************************
تتذكروا أننا قلنا أن ال key frames بتكون عند تغير المشاهد صح؟ هذا الخيار بيزيد من حساسية الكوديك x264 لتغير المشاهد، وبالتالي رح يضيف Key Frames أكثر، القيمة الافتراضية هي 40، بس لو كان الفيديو اللي تبي تسوي له أنكود ميييت يجيب النووم ما فيه لا حركة ولا شي، زيد من هالحساسية ب 5 أو 6، وانقص منها لو كان الانيمي كثير الحركة، والمشاهد تتغير فيه كثيرا
--------------------------------------------------------
CABAC:
*****************************
هالخيار هو الثاني يزيد من فعالية الأنكود كثيرا، لكن بيخلي الفيديو المنتج بيتطلب شوية مجهود من الحاسوب عند قرائته
--------------------------------------------------------
GOP Size (Min/Max):
*****************************
الخيار هذا بيحدد أدنى و أقصى عدد للفريمات من نوع P أو B، التي تكون بين كل Key Frame والذي يليه، طيب أنتو أكيد تعرفوا ايش هو FrameRate، هو تردد الفريمات، أي عدد الفريمات في الثانية، وال key frames كما قلنا بتحسن الجودة على حساب الحجم صح؟
Sonts`:شيلها وريحنا،
ههههههه، أكيد مجنون هذا، طبعا الكل لما يشغل الفيديو، لازم أنه قد يريد الذهاب مباشرة إلى دقيقة معينة مباشرة (العاشرة مثلا)
حط في بالك يا بو الشباب لو شلت ال key-frames، وحاولت تروح مباشرة للدقيقة العاشرة مثلا، الشاشة رح تبقى سودة حتى نهاية الحلقة، يبقى قعدت بلا أنيمي اليوم
نرجع نفسر شوي ال keyframes، انت لما تشغل الفيديو، اللي بيصير هو أنه يتم تخزين بيانات ال key-frame الاول في الذاكرة الحية RAM، وبالاعتماد عى هذه البيانات، يتم اظهار الفيديو بالاعتماد على الفرق بين كل فريم والذي يليه << راجع بداية هذا الرد ،
هذه البيانات تستمر حتى تلاقي keyframe ثاني، حينها يتم حذف البيانات الأولى وتعويضها ببيانات ال key-frame الجديد, واحنا لما نبي نروح للدقيقة العاشرة مباشرة، يتم البحث عن أقرب key-frame لتلك الدقيقة، تخزين بياناته في الذاكرة، وعرض الفيديو بالاعتماد على هذه البيانات, ولو ماكان هناك كيفريم طبعا، القارئ بيبقى مسكين ينتظر واحد يجي حتى تخلص الحلقة من دون جدوى
لكن هذا ما يعني أننا نُفرِط في استخدامها، لو كان عندك أكثر من اثنين Key-Frames في الثانية، فأنت لا شك تحب تعذب نفسك لا في الانكود ولا في الرفع خخ، بالكثييير Key-Frame واحد في الثانية،
الحين نخش في صلب الموضوع << أنت لسه ما دخلت؟ xDDD
طيب حتى نتجنب الحصول عل اثنين keyFrames في نفس الثانية، لازم يكون عدد الفريمات اللي بين الكيفريم واللي يليه أكبر من ال FrameRate(عدد الفريمات في الثانية)، لو كانت عندي FrameRate = 23.976 ، أنا رح أحط min=24 فما فوق، وبهذا أكون تأكدت من وجود كيفريم واحد في الثانية، وحتى نتجنب مشاكل الذهاب مباشرة إلى دقيقة معينة من الفيديو (هذه المشاكل تسمى ال video Lags)، لازم ما نخلي القيمة max كبيرة كثير، حتى ما نقعد ننطر عشرين ثانية مثلا حتى يظهر الفيديو، طريقة اختيار max هي مسألة حسابية بسيطة، لو نبي مثلا أقصى مدة ننطر فيها فيديو هي 5 ثواني، نضرب ال FrameRate في 5 ونحطه في max، أي max = 100 ، يستحسن أنك تحط قيمة أكبر من هيك، اضرب ال FrameRate في 10 حتى لانزيد من الحجم كثيرا، لأن القيمة القصوى ما تعني بالضرورة أنه رح يخلي لك بالضبط 10 ثواني بين كل keyframe واللي ليه، يعني بتكون السالفة بالنص ههههه
--------------------------------------------------------
Mixed References:
*****************************
هذا الخيار مهم جدا لأنه يسمح للكوديك x264 بالتحكم بشكل أفضل في ال Keyframes، خصوصا لو اخترت قيمة كبيرة لل Key-Frames (شوف بداية الخيارات)
--------------------------------------------------------
No Fast P Skip:
*****************************
هذا الخيار لو حطيت عليه علامة صح، بيمنع الكوديك من المرور بسرعة على ال P-Frames، يعني بيحسن الجودة قليلا، لكن هيئ نفسك للانتظار طويييلا xDDD
--------------------------------------------------------
Motion Estimation Method:
*****************************
الحين جينا للب عمل الكوديكات ههه، من الصبح واحنا قاعدين نقول الفرق بين الفريم والذي يليه، أهو الحين جينا لخيار كيفية تحديد هذا الفرق:[*]Diamond: أقولها مباشرة، الجودة زفت، بس سرعة الضغط خارقة [*]Hexagon: خيار أقل من المتوسط، بياخذ بعين الاعتبار الجودة، بس مو لين هناك[*]Multi Hex:يمكن تلاقي اسمه في برامج أخرى "Uneven Multi-Hexagon"، هذا هو الخيار المعتدل، بيوفق بين السرعة والحجم[*]Exhaustive: لو كنت حاقد على حاسوبك وتبي له أشغال شاقة حط هذا الاختيار هههه،
--------------------------------------------------------
Subpixel Motion Estimation:
*****************************
احنا لسه شفنا كيف يحدد الكوديك الفرق بين الفريمات، هذا الخيار يخص "توقع" الفرق بين الفريمات، يمكن تلاقي اسمه في برامج ثانية Partition Decision، الخيارات تتراوح ما بين 1 حتى 7، القيمة 6 هي الخيار المعتدل، و 7 لو ما كان يهمك وقت الانتظار
--------------------------------------------------------
Trellis RD Quantization:
*****************************
هالخيار هو الثاني من هدوك اللي يفترض أنهم يزيدون الجودة، بس يرهقون الحاسوب ويزيدون وقت الانتظار، << لو كان عندك حاسوب من الجدد، الحواسب المررعبة، ما بخاف عليك![]()
+ ملاحظة بسيطة، لا تستخدم هذا الخيار إلا في حالة استخدامك لطريقة ال Two Pass فما فوق، لا تستخدمه مع ال Single Pass
الخيارات المتاحة :
[*]Disabled: توقيف الخيار[*]Final MB: تفعيل الخيار، استخدمه عند استعمال ال Two Pass ه.[*]Always: الحصول على أقصى جودة (الوقت أكيد رح يكون أبدي)
--------------------------------------------------------
Partitions:
*****************************
هذا الخيار يحدد كيفية البحث عن التغيرات في الصور، يستحسن تشغيل كل الخيارات حتى يكون البحث أكثر دقة والجودة أحسن
***
**
*
يـــتبع

رد مع اقتباس











>





المفضلات