سؤال

هل يعرف أحد كيف يمكنني استرداد بُعد الإطار لفيديو mpeg4 (غير h264، أي.Mpeg4 الجزء 2) من تدفق البت للفيديو الخام؟أقوم حاليًا بكتابة مصدر وسائط مخصص لمؤسسة Windows Media Foundation، ولا بد لي من توفير نوع الوسائط الذي يحتاج إلى حجم الإطار.لا يعمل بدونها.أيه أفكار؟شكرًا

هل كانت مفيدة؟

المحلول

أنا لا أفهمك.هل تحاول معرفة عرض وارتفاع الفيديو الذي يتم بثه؟إذا كان الأمر كذلك (وأعتقد أن هذا هو "البعد" الذي تبحث عنه) فإليك الطريقة:

  1. تحليل الدفق لهذا العدد الصحيح 000001B0(ست عشرية) دائمًا ما يكون أول شيء يتم بثه.إذا لم يكن الأمر كذلك، فاطلع على SDP للبث (إذا كان لديك أي منها، وابحث عن config= الميدان، وهناك..الآن فقط أصبحت سلسلة Base16!
  2. اقرأ كافة البايتات حتى تصل إلى العدد الصحيح 000001B6(عرافة)
  3. يجب أن تحصل على شيء مثل هذا (عرافة): 000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. هذا هو "رأس تكوين الدفق" أو الإطار أو أي شيء آخر، الاسم الدقيق هو تسلسل كائن الفيديو.فهو يحمل جميع المعلومات التي قد يحتاجها جهاز فك التشفير لفك تشفير دفق الفيديو.
  5. اقرأ آخر 4 بايتات (في المثال الخاص بي مفصولة بمسافة واحدة - A021E0A2)
  6. الآن لاحظ هذه البايتات كعدد صحيح غير موقّع 32 بت...
  7. تحصل عرض قراءة أول 8 بت، وبعد ذلك اضرب ما تحصل عليه بـ 4
  8. تخطي 7 بت القادمة
  9. تحصل ارتفاع قراءة 9 بت القادمة
  10. في الكود الزائف:

      WIDTH = readBitsUnsigned(array, 8) * 4;
      readBitsUnsigned(array, 7);
      HEIGHT = readBitsUnsigned(array, 9);
    

ها أنت ذا...العرض والارتفاع.(:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top