قاموس

ماذا يعني NB Frames؟

تخبرك قيمة NB Frames بعدد الإطارات التي يحتويها مسار الفيديو أو الصوت. لا يعرض FFmpeg هذا العدد لكل تنسيق، لذلك قد تكون القيمة غير معروفة.

nb-frames

عدد الإطارات (NB Frames) يعني عدد الإطارات في مسار واحد من ملف فيديو أو صوت. الأحرف NB تعني "number" (عدد). يطلق FFmpeg وبرنامج ffprobe التابع له على هذا الحقل الاسم nb_frames.

يمكن أن يحتوي الملف على عدة مسارات، وكل مسار له قيمة خاصة به لعدد الإطارات (NB Frames). ملف يحتوي على مسار فيديو واحد ومسار صوت واحد لديه بالتالي عدّان منفصلان. عدد المسارات (NB Streams) قيمة مختلفة: فهي تعدّ المسارات في الملف، لا الإطارات داخل مسار واحد.

ما هو الإطار

في مسار فيديو، الإطار هو صورة ثابتة واحدة من الفيديو. في مسار صوت، يختلف المعنى حسب التنسيق.

في AIFF، يحتوي إطار العينة على عينة واحدة لكل قناة صوت. في MP3، الإطار كتلة أكبر، ويضرب FFmpeg عدد الإطارات في عدد العينات لكل إطار للحصول على الطول. لذلك لا يمكنك مقارنة عدد الإطارات الصوتية مباشرة بين تنسيق وآخر.

كيف تبدو القيم

تكون القيمة عددًا صحيحًا عندما تكون معروفة. تظهر هذه القيم في كود FFmpeg ووثائقه ونتائج اختباراته:

  • 708: العدّ لمسار فيديو في أحد ملفات الاختبار الخاصة بـ FFmpeg.
  • 1: العدّ لصورة ثابتة واحدة في ملف HEIC.
  • 0: القيمة التي تستخدمها واجهة برمجة تطبيقات FFmpeg عندما يكون العدد غير معروف.
  • N/A: النص الذي تعرضه المخرجات الافتراضية لـ ffprobe عندما تكون القيمة 0. أما مخرجات JSON وXML فتترك هذا الحقل فارغًا.

القيمة 0 أو N/A، أو غياب الحقل، لا تعني أن المسار فارغ. هي تعني فقط أن FFmpeg لم يحدد عدًّا في هذا الحقل.

من أين تأتي القيمة

يأتي عدد الإطارات (NB Frames) عادة من بنية الملف نفسه، لذلك لا يحتاج FFmpeg إلى عدّ الإطارات. يعتمد المصدر على التنسيق:

  • MP4 وMOV: يجمع FFmpeg أعداد العينات في جدول الوقت إلى العينة، وهو ذرة stts.
  • AVI: يقرأ FFmpeg عددًا من 32 بت من ترويسة المسار، وهو كتلة strh.
  • AIFF: يقرأ FFmpeg الحقل numSampleFrames من الكتلة العامة (Common Chunk).
  • WAV وMP3 وFLAC وMKV: برامج قراءة FFmpeg لهذه التنسيقات لا تضبط هذه القيمة، لذلك تعرض مخرجات ffprobe الافتراضية N/A.

يمكن أن يحتوي ملف MKV مع ذلك على عدد تحت اسم آخر. يكتب برنامج mkvmerge وسمًا باسم NUMBER_OF_FRAMES لكل مسار.

كيفية عدّ الإطارات

عدد الإطارات (NB Frames) يعيد فقط الرقم المخزن في بنية الملف. هذا الرقم لا يثبت أن كل الإطارات موجودة فعليًا في الملف. أحد ملفات اختبار MOV في FFmpeg يخزن عددًا قدره 708، لكن ffprobe يقرأ فقط 66 حزمة و65 إطارًا من ذلك الملف.

لقياس العدد فعليًا، شغّل ffprobe مع خياري -show_streams و-count_frames. يقوم برنامج ffprobe بعد ذلك بفك ترميز المسار ويعرض النتيجة في حقل منفصل، nb_read_frames. يستغرق هذا وقتًا أطول لأن ffprobe يجب أن يفك ترميز كل إطار.

استخدم هذا الفحص لمسارات الفيديو. في ملف AIFF، يحسب ffprobe الكتل المفكوكة التي تحتوي كل منها على العديد من إطارات العينات، لذلك يختلف الرقمان حتى في ملف كامل.

خيار -count_packets، المستخدم أيضًا مع -show_streams، يعدّ الحزم دون فك ترميزها ويعرض النتيجة في nb_read_packets. تحتوي حزمة الفيديو عادة على إطار مضغوط واحد، لكن قد تحتوي حزمة الصوت على عدة إطارات.

لماذا هو مهم

في مسار فيديو، يعطي عدد الإطارات مع المدة معدل إطارات متوسطًا. يحسب قارئ MP4 وMOV في FFmpeg المعدل من عدد الإطارات والمدة. في نفس ملف الاختبار، يعطي 708 إطارًا على 23.613333 ثانية حوالي 29.98 إطارًا في الثانية.

يساعدك العدد أيضًا في فحص ملف الفيديو. إذا كان العدد المقاس أقل بكثير من العدد المخزن، فقد يكون جزء من بيانات الفيديو مفقودًا.

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