قاموس

ما هو تنسيق البكسل؟

تنسيق البكسل هو الطريقة التي يحدد بها الفيديو أو الصورة بيانات الألوان لكل بكسل. اكتشف ما تعنيه القيم مثل yuv420p لملفك.

pixel-format

تنسيق البكسل هو طريقة ترتيب كل بكسل في بيانات الصورة الخام لصورة أو فيديو. يوضح للبرنامج مكونات اللون التي تحتوي عليها الصورة وعدد البِتّات التي تستخدمها.

تقارير الفيديو تعرض هذا الحقل غالبًا باسم 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 مع النطاق الكامل الذي يستخدمه JPEG
  • rgb24: 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 لملفات الرفع.

مفاتيح الميتا