H.264 SPS/PPS مفقود في تدفقات RTSP: لماذا يتم تشغيل VLC ولكن يفشل FFmpeg أو Analytics

لماذا يؤدي فقدان دليل H.264 SPS/PPS إلى حدوث أخطاء في وحدة فك ترميز RTSP، وإطارات سوداء، وفشل التحليلات حتى عندما يبدو أن اللاعبين المتسامحين يعملون.

H264, RTSP, SPS, PPS, وحدة فك التشفير

نمط فشل RTSP المحبط مألوف لدى مهندسي الكاميرات: "يقوم VLC بتشغيل الدفق، لكن FFmpeg، أو VMS، أو خط أنابيب التحليلات، أو خدمة استيعاب السحابة تفشل بسبب أخطاء وحدة فك التشفير. غالبًا ما يتحول موضوع الدعم إلى نقاش حول الأداة "الصحيحة". والسؤال الأفضل هو ما إذا كان الدفق يوفر دليلاً كافيًا لمعلمة H.264 لجهاز فك ترميز جديد." يحتاج H.264 إلى مجموعات معلمات التسلسل ومجموعات معلمات الصورة. عادة ما يطلق عليهم المهندسون اسم SPS وPPS. وهي تصف كيفية فك تشفير تدفق البتات: "الملف الشخصي والمستوى والأبعاد والسلوك المرجعي وبنية الصورة. بدونها، قد يرى جهاز فك التشفير بيانات الشريحة ولكن لا يزال ليس لديه سياق صالح لتحويلها إلى إطارات."

حيث يمكن أن تظهر SPS وPPS

في عمليات نشر RTSP، يمكن أن تظهر أدلة SPS/PPS في أكثر من مكان:

  • SDP "مجموعات معلمات sprop".
  • حمولات RTP داخل النطاق قبل الشرائح
  • تكرر قبل الإطارات الرئيسية
  • تم تخزينها مؤقتًا بواسطة لاعب متسامح من جلسة سابقة
  • يتم تسليمها فقط بعد انتظار IDR التالي

وهذا ما يفسر مشكلة "العمل في عارض واحد". يمكن للاعب إعادة استخدام الحالة، أو الانتظار لفترة أطول، أو التعافي من المراجع المفقودة، أو تطبيق إخفاء الأخطاء. قد تبدأ خدمة الاستيعاب الصارمة بوحدة فك تشفير فارغة وترفض الدفق حتى وصول SPS/PPS وإطار مفتاح قابل للاستخدام.

ماذا يعني الخطأ في الواقع

رسائل مثل "صورة مفقودة في وحدة الوصول" أو "خطأ في رأس شريحة فك التشفير" أو "مرجع PPS غير موجود" أو "انتظار SPS/PPS" لا تعني تلقائيًا أن الكاميرا معطلة. إنها تعني أن وحدة فك التشفير لم يكن لديها سياق المعلمة الذي تحتاجه عند النقطة التي حاولت فيها فك التشفير.

الأسئلة التشخيصية هي:

  • هل يتضمن SDP "مجموعات معلمات sprop"؟
  • هل تم رؤية SPS وPPS في حمولة RTP؟
  • هل وصلوا قبل الشريحة الأولى؟
  • هل ظهر إطار IDR بعد تعيين المعلمات؟
  • هل أدى فقدان الحزمة إلى إزالة حزمة مجموعة المعلمات؟
  • هل بدأ البث في منتصف الحزب الجمهوري؟
  • هل كان نوع الحمولة متوافقًا مع SDP؟

وبمجرد الإجابة على هذه الأسئلة، يصبح الإجراء التالي أكثر وضوحا.

لماذا تعتبر عمليات بدء البث في منتصف الحزب الجمهوري محفوفة بالمخاطر

تبدأ العديد من الكاميرات في الإرسال من موضع برنامج التشفير الحالي عندما يتصل عميل RTSP. إذا انضم العميل إلى منتصف GOP، فقد يتلقى الإطارات البينية قبل الإطار الرئيسي. وإذا فشل التدفق أيضًا في تكرار SPS/PPS بانتظام، فقد ينتظر مفكك التشفير أو يفشل حتى الحد المناسب التالي.

بالنسبة لبرنامج المراقبة، يمكن أن يبدو هذا كما يلي:

  • شاشة سوداء لعدة ثواني
  • يظهر الإطار الأول فقط بعد الحركة أو الفاصل الزمني للإطار الرئيسي
  • خط أنابيب التحليلات يرفض الدفق
  • يبدأ تشغيل أداة إعادة البث لكن عملاء المصب يفشلون
  • الانتعاش في بعض الأحيان بعد إعادة الاتصال

قد يكون الإصلاح من جانب الكاميرا: تقصير الفاصل الزمني للإطار الرئيسي، أو تكرار مجموعات المعلمات، أو استخدام ملف تعريف دفق مختلف، أو التبديل من H.265 إلى H.264 إذا كان المنتج النهائي يتمتع بدعم أكثر صرامة.

SDP هي مطالبة؛ RTP هو دليل

تعلن بعض أنظمة الكاميرا عن SPS/PPS في SDP. ويتوقع آخرون أن ينتظر جهاز فك التشفير وحدات NAL داخل النطاق. البعض يفعل كلا الأمرين. البعض لا يفعل ذلك بشكل صحيح. يجب أن يقارن التقرير التشخيصي المطالبة بالحمولة.

تتضمن الأدلة المفيدة ما يلي:

  • مجموعات المعلمات base64 في SDP
  • أنواع وحدات H.264 NAL التي تمت ملاحظتها في RTP
  • أول فهرس حزمة SPS/PPS
  • أول فهرس حزمة IDR
  • فقدان الحزمة قبل جاهزية الإطار الرئيسي
  • حالة الاستعداد لوحدة فك التشفير

وهذا أقوى بكثير من "تجربة لاعب آخر". فهو يخبر البائع ما إذا كان يجب تغيير SDP أو إعدادات التشفير أو سلوك الحزم.

حيث يناسب مفتش RTSP

تم تصميم RTSP Inspector لفحص بنية RTSP وSDP وRTP/RTCP وبرنامج الترميز دون التظاهر بأن التشغيل هو التشخيص. بالنسبة لحالات SPS/PPS المفقودة، يجب أن يساعد المنتج المهندسين في إظهار:

  • تم توصيل الدفق بنجاح
  • حمل SDP أو لم يحمل مجموعات المعلمات
  • قام RTP بتسليم أو عدم تسليم مجموعات المعلمات
  • لقد أثر فقدان الحزمة أو لم يؤثر على حدود فك التشفير الأولى
  • يعود الفشل إلى تدفق البيانات الوصفية، أو توصيل الشبكة، أو دعم وحدة فك التشفير، أو تكوين الكاميرا

هذا هو نوع الدليل الذي يحل حجة "يعمل VLC". يعد عمل VLC معلومات مفيدة. وهذا ليس دليلاً على أن التدفق نظيف لكل مستهلك.

إذا كان استعلام البحث الخاص بك هو "يعمل RTSP في VLC لكن FFmpeg يفشل"، فافحص SPS/PPS والإطارات الرئيسية وفقدان الحزمة وSDP قبل إلقاء اللوم على النظام المتلقي للمعلومات.