تنسيق البكسل هو طريقة ترتيب كل بكسل في بيانات الصورة الخام لصورة أو فيديو. يوضح للبرنامج مكونات اللون التي تحتوي عليها الصورة وعدد البِتّات التي تستخدمها.
تقارير الفيديو تعرض هذا الحقل غالبًا باسم pix_fmt، بقيمة مثل yuv420p. توضح قيمة كهذه نموذج اللون، وعينات الألوان الفرعية (chroma subsampling)، وعمق البت (bit depth). حيز الألوان (color space) حقل منفصل.
ما هي الملفات التي تحمله
برنامج ffprobe من FFmpeg يسرد pix_fmt لكل تدفق فيديو. يشمل ذلك ملفات MP4 وMOV وMKV وWebM.
الصور تعرض قيمة أيضًا. يعطي FFmpeg القيمة yuvj420p لصورة JPEG بعينات 4:2:0 والقيمة rgb24 لصورة PNG بنظام RGB بعمق 8 بت.
ملف صوت يحتوي على صورة غلاف يمكنه أيضًا عرض تنسيق بكسل. يعالج FFmpeg تلك الصورة كتدفق فيديو.
يقرأ ExifTool وسمًا باسم PixelFormat من ملفات Windows HD Photo (HDP وWDP). يعرض قيمًا مثل 24-bit RGB و8-bit Gray.
كيف تبدو القيم
يبني FFmpeg أسماءه من أجزاء قصيرة. القيمة yuv420p10le تتكوّن من 5 أجزاء:
yuv: نموذج اللون. Y تمثل السطوع، وU وV تحملان معلومات اللون. يُطلق على U وV أيضًا Cb وCr كما في YCbCr.420: أخذ العينات. بيانات اللون نصف عرض ونصف ارتفاع بيانات السطوع.p: مخطَّط (planar). لكل مكوّن مستوى منفصل. التنسيق المضغوط (packed) يبقي المكوّنات معًا في مصفوفة واحدة.10: عدد البِتّات لكل مكوّن. القيمةyuv420pلا تحتوي على رقم هنا وتستخدم 8 بِتّات.le: ترتيب البايتات، little-endian. النهايةbeتعني big-endian.
القيم النموذجية
كل رقم أدناه هو متوسط عدد البِتّات لكل بكسل في بيانات الصورة الخام:
yuv420p: 12 بِتًّا، اللون بنصف العرض ونصف الارتفاعyuv422p: 16 بِتًّا، اللون بنصف العرضyuv444p: 24 بِتًّا، اللون لكل بكسلyuvj420p: 12 بِتًّا، نفس تخطيطyuv420pمع النطاق الكامل الذي يستخدمه JPEGrgb24: 24 بِتًّا، أحمر وأخضر وأزرق في شكل مضغوطrgba: 32 بِتًّا، مع قيمة ألفا إضافية للشفافيةgray: 8 بِتّات، سطوع فقطpal8: 8 بِتّات، كل قيمة تشير إلى لون من لوحة ألوان
في النطاق الكامل، تتراوح قيمة السطوع بعمق 8 بِتّات من 0 إلى 255. في النطاق المحدود، تتراوح من 16 إلى 235. يوصي FFmpeg باستخدام حقل نطاق منفصل بدلًا من أسماء yuvj.
من أين تأتي القيمة
البرنامج الذي يشفّر التدفق هو الذي يحدد تنسيق البكسل. في FFmpeg، تختاره عبر خيار -pix_fmt.
عادة لا يُحفظ الاسم نفسه داخل الملف. البرنامج الذي يقرأ الملف يبني الاسم من التفاصيل المخزَّنة.
بالنسبة إلى H.264، يستخدم FFmpeg عمق البِت وتنسيق عينات اللون في ترويسة التدفق. بالنسبة إلى PNG، يستخدم FFmpeg عمق البِت ونوع اللون في ترويسة الصورة.
لماذا هذا مهم لملفك
تنسيق البكسل يحدد حجم بيانات الصورة الخام. إطار rgb24 يحتوي على 24 بِتًّا لكل بكسل، وإطار yuv420p يحتوي على 12 بِتًّا. برامج الترميز (codecs) تضغط هذه البيانات بعد ذلك، لذا هذه الأرقام لا تعكس حجم الملف النهائي.
تنسيق البكسل يحدد أيضًا مقدار تفاصيل اللون التي يحتفظ بها الملف. عين الإنسان ترى تفاصيل أكثر بكثير في السطوع مقارنة باللون، لذا يسبب 4:2:0 فقدانًا مرئيًا قليلًا فقط.
إذا حوّلت 4:2:0 إلى 4:4:4، يحسب البرنامج العينات المفقودة من العينات القريبة. تفاصيل اللون التي أزالها 4:2:0 تبقى مفقودة.
ملف التعريف (profile) في H.264 سبب آخر لفحص القيمة. ملفا التعريف Main وHigh يدعمان ألوانًا بعمق 8 بِتّات مع عينات 4:2:0.
يتطلّب تدفق H.264 بالقيمة yuv444p أو yuv420p10le ملف تعريف أعلى. قواعد HLS من Apple تشترط H.264 بملف تعريف High أو أقل. توصي YouTube بملف تعريف High مع 4:2:0 لملفات الرفع.