TSDuck-based MPEG Transport Stream multiplexer with full PSI/SI support


يقوم Stream Manager mux بتجميع تدفقات SPTS متعددة في مخرج CBR MPTS واحد (DVB/IPTV).
عندما يتم تمكين statmux الأصل mux، يعمل كل برنامج تشفير FFmpeg بغطاء -VBR: -b:v <avg> -minrate <min> -maxrate <max> -bufsize <max×2>.
tsp -I null (∞ حزم NULL @ معدل الخط) → -P دمج tsp -I ip <stream> (تراكب الحزم الحقيقية) → -P الاستمرارية (إنذار السقوط) → -P pcradjust --bitrate X (إعادة كتابة PCRs) → -P pcrverify --jitter-max 500μs → -P bitrate_monitor (إنذار معدل ±5%) → -P تنظيم --bitrate X --packet-burst
تنظيم البرنامج المساعد ينبعث بالضبط mux.bitrate بت في الثانية على السلك.
يُظهر الشريط العلوي Mux 3 مجاميع مع حالة اللون.
Σ avg ≥ 85% mux.bitrate — متوسط المجموع المستهدف عبر جميع القنوات بالإضافة إلى الصوت.
Σ الحد الأقصى ≥ 160% mux.bitrate — مجموع الحد الأقصى للسقف.
Σ دقيقة ≥ 50% mux.bitrate — مجموع أرضية التشفير.
الميزانية المتاحة بعد PSI/SI/EIT: ~18.5 ميجابت في الثانية.
عند ≥ 10 إنذارات في 60 ثانية، يظهر إشعار فلاش في Mux UI يوصي بتقليل معدل البت.
-P bitrate_monitor --periodic 60 --min/max ±5% — إنذار إذا تجاوز المعدل الفعلي ±5% من الهدف.
-P الاستمرارية - يتتبع عدادات استمرارية TS.
-P pcrverify --jitter-max 500000 — يسمح DVB بارتعاش PCR ≥ 500 μs.
مصادفة GOP — تُصدر جميع أجهزة التشفير إطارات I في وقت واحد، وهي ذروة المصادفة.
فقدان إشارة الإدخال - تصبح القناة الواحدة سوداء، ويستمر mux (بفضل قاعدة -I null).
الإفراط في الاشتراك (القمم المستدامة> السعة) — الكتل/تلعثم الصوت ~50-200 مللي ثانية.
انجراف PCR - تلعثم STB كل بضع ثوانٍ.
STB VBV قيد التشغيل — يفقد STB المزامنة ويستعيد اكتسابه (حوالي 2-3 ثوانٍ).
--max-input-packets 4096 / --max-flushed-packets 4096 (FIFO داخلي ≈ 0.3 ثانية @ 19 ميجابت في الثانية).
تُظهر شارة الشريط العلوي `📐rec X.XM` سعة Mux الموصى بها المستمدة من نظرية الحد المركزي.
لون الشارة: 🟢 أخضر = حد أقصى ≥ 99.7% تفصيل (محافظ) · 🟡 كهرمان = بين 99% و99.7% · 🔴 أحمر = حد أقصى < 99% (نقص في الإمداد، خطر السقوط) · 🔵 أزرق = غطاء غير محدد.
z-score لكل هدف تغطية: 90% z=1.28 · 95% z=1.65 · 99% z=2.33 · 99.7% z=3.00 (افتراضي) · 99.99% z=3.72 (درجة البث).
σ_eff = σ_total × statmux_factor (statmux_factor = 0.7 عندما يكون Statmux قيد التشغيل، وإلا 1.0)
قناة 1080p25 HD: المتوسط = 4000-5000 كيلوبت في الثانية، الحد الأدنى = المتوسط × 0.75 (~3000-3750)، الحد الأقصى = المتوسط × 1.5 (~6000-7500).
Adaptive Hybrid Statmux هي آلية وقت تشغيل تعمل على تحويل السعة غير المستخدمة من التدفقات الأساسية (المحمية، VBR الكاملة) إلى التدفقات المتوازنة (التضحية).
سعة Mux 38 ميجابت في الثانية
بدون Adaptive Hybrid Statmux، يجب عليك تحديد حجم mux لأسوأ حالة Σ max.
Pure CBR (جهاز التشفير ثابت)
VBR بدون Statmux
التكيف الهجين Statmux ON
إن تجاوز إدخال عنوان URL المخصص وStatmux متنافيان.
┌───────────────────────┐
يحدث الكسب الإحصائي فقط عندما يكون لدى أجهزة التشفير نطاق VBR واسع - عندما يكون الحد الأقصى ≈ متوسط، يكون جهاز التشفير فعالاً CBR وليس لدى جهاز التوجيه أي شيء لإعادة توزيعه.
مثال عملي - 38 ميجابت في الثانية mux، 10 HD core + 2 متوازن:
النطاق الموصى به لكل تيار أساسي:
تدفق متوازن واحد على الأقل - بدون واحد، لن يكون لدى جهاز التوجيه Adaptive Hybrid أي شيء يمكن سحقه أثناء فترات الذروة، لذا فإن الكسب = 0
تعتبر قنوات الموسيقى والمعلومات هي أفضل المرشحين - فهي تتحمل نسبة 90%+ لتخفيض المعدل
التتبع عبر إدخالات سجل `[جهاز توجيه التوازن]` - يُظهر انتقالات الطبقة `core_max` و`المتبقية` لكل علامة ثانية واحدة
إذا كانت `core_max > السعة` (تحذير CORE OVERPEAK في السجل)، فقم بتقليل عدد التدفق الأساسي أو خفض المعدل الأقصى لجهاز التشفير
إضافة تدفقات إلى mux (يظل تعيين القناة يدويًا)
قم بتبديل Statmux على رأس Mux (الشريحة الصفراء).
قم بتمييز التدفقات المضحية عبر مربع الاختيار البرتقالي الموجود على الجانب الأيمن - عادةً قنوات الموسيقى/المعلومات حيث يكون خفض المعدل غير مرئي
منتهي.
تشترك القنوات المتعددة ذات معدل البت المتغير في تدفق نقل ثابت واحد (MPTS).
الفئة: statmux ذات الحلقة المغلقة مع نظرة أمامية C1 (تغذية للأمام) عبر مشفرات VBR - مبدأ statmux للبث، مدفوعًا بتعقيد المصدر.
UDP البث المتعدد SSM، لكل قناة
التشفير
تعقيد المصدر
الاسترجاع
الخط الخاص / الدفق
المخصص (Σ ≥ التجمع)
عازلة
الحشو الفارغ → CBR
سلك CBR في الغطاء
توقع مشهدًا معقدًا قبل الانخفاض
الأسلاك المقاسة - المعايرة
معدل البت المستهدف
تعمل كل قناة على خطها الخاص حتى mux (جهاز تشفير منفصل + اتصال استرجاع)، حيث يتم دمجها جميعًا في خط بث متعدد MPTS واحد بمعدل بت ثابت تمامًا.
يجمع المُخصص بين إشارتين — التنبؤ من تعقيد المصدر (للأمام) والسلك المُقاس (للخلف).
يقيس C1 مدى تعقيد المحتوى في وحدة فك التشفير - مما يؤدي إلى إخراج جهاز التشفير من خلال زمن انتقال خط الأنابيب.
تقوم البتات الدقيقة لكل دفق المنبعثة من mux (عدادات جانب المرسل) بمعايرة التعقيد → رسم خرائط معدل البت والاحتفاظ بالمبلغ تمامًا عند المجمع.
يتم دعم مطالبة التدفق بما ينتجه جهاز التشفير فعليًا (× ذروة الإرتفاع).
الهدف ليس معدل بت متساويًا ولكن جودة متساوية - الضغط المستمر ينقل البتات من القنوات عالية الجودة (QP منخفضة) إلى القنوات منخفضة الجودة (QP عالية).
عندما يشير C1 إلى سقوط قناة، يتم تسليم النطاق الترددي الخاص به إلى الآخرين بنفس العلامة - حيث يتم تكثيفه قبل أن يصل الانخفاض فعليًا إلى السلك.
التجمع = الحد الأقصى N - النفقات العامة (PSI / EIT) - الصوت - الاحتياطي (شريط التمرير).
الطلب لكل تيار = السلك القابل للتسليم × نظرة مستقبلية لـ C1 (تغير التعقيد النسبي) + ضغط معادلة الجودة.
التخصيص النسبي للتجميع حسب الطلب، يتم تثبيته على [min, max] من ملف تعريف الفيديو؛
هدف التشفير = التخصيص / المعايرة (قياس / هدف EMA لكل تيار) ؛
تحافظ مؤازرة الانتظار المؤقت على مستوى قائمة الانتظار عند ~1 ثانية (نطاق)، ومساندة الطوارئ عند التحميل الزائد؛
الإخراج هو دفق CBR دقيق عند الحد الأقصى الذي تم تكوينه.
تحتوي قائمة انتظار الإرسال على مستوى ثابت يبلغ حوالي 1 ثانية من السلك الذي يمتص انخفاضات GOP دون الثانية (بين إطارات I).
عندما يكون المحتوى أقل من الحد الأقصى، يتم ملء الفرق بحزم MPEG-TS الخالية (PID 0x1FFF).
يتم تحديد سرعة الخروج حتى الحد الأقصى المحدد (ABSTIME المزدحم) ؛
رسم بياني مباشر مكدس للسلك الحقيقي — كل نطاق عبارة عن قناة واحدة، تتدفق بسلاسة من اليمين.
كل قناة لها لون ثابت؛
الخط المتقطع في الأعلى = الغطاء المكوّن (سقف السلك).
الشريط الأبيض المنقط في الأعلى = حشوة فارغة (سعة مجانية).
العلامات الحمراء على المخطط الزمني = تجاوز سعة قائمة انتظار الإرسال (إسقاط).
تقوم الأزرار بتبديل النافذة الزمنية على الفور (من جانب العميل)، أما النافذة النشطة فلها خلفية رمادية.
يُظهر التمرير معدل البت لكل قناة وQP ومؤشر الجودة في تلك اللحظة (القيمة التاريخية، وليست مباشرة).
مستوى تنظيم حوض السباحة الحالي (تجمع/(تجمع − تقليم)).
نطاق التسامح فوق الحد الأقصى - مقدار المبلغ الذي يجب الاحتفاظ به كاحتياطي فارغ.
يعرض الرأس استخدام قائمة انتظار الإرسال % والقطرات التراكمية.
طول GOP الشائع لجميع القنوات في mux (مقفل في ملفات تعريف الفيديو في البداية).
حجم المخزن المؤقت لبرنامج التشفير VBV (مللي ثانية).
تحتوي كل قناة في mux على بطاقة تحتوي على الاسم ورقم PNR ومعدل البت الحالي والمستهدف والحالة:
قيد التشغيل - يتم تشفير القناة وتدفقها إلى السلك.
البدء - يدور جهاز التشفير / يستقر.
متوقف — القناة في وضع الإرسال ولكنها لا تعمل (0 كيلوبت في الثانية).
خطأ - تم فقدان الإدخال / تعطل جهاز التشفير.
يقوم StatMux بإنشاء المجموعة الكاملة من جداول MPEG-TS / DVB الإلزامية مباشرة في NIF mux - بدون مُدخل SI خارجي.
طاولة
معرف المنتج
فاصلة
الغرض/ المصدر
EIT (جدول معلومات الحدث، PID 0x12) ليس ثابتًا - فهو متصل بالكامل بنظام EPG الخاص بالتطبيق.
الحد الأدنى = الطابق السفلي (مشهد ثابت).
متوسط = المستوى المستهدف.
الحد الأقصى = السقف (الإرتفاع VBR للقمم/التخفيضات).
أمثلة (متوسط): SD 1.5–2.5M · HD 2.5–4M · FHD 4–6M · UHD 12–18M.
نحن نقوم بتعدد إرسال إحصائي حقيقي - إعادة توزيع البتات الديناميكية عبر قنوات VBR التي تتقاسم سلكًا ثابتًا، مع معادلة الجودة.
سلك CBR عند الحد الأقصى · المخزن المؤقت لمدة 1 ثانية · التخصيص النسبي لكل تيار · التغذية التطلعية C1 · معادلة الجودة · إعادة التوزيع التنبؤي · الحشو الفارغ · السرعة الدقيقة.
يستخدم برنامج البث statmux تقدير معدل التشوه الخاص بجهاز التشفير (تكلفة الإطار الدقيقة، ويكون جهاز التشفير عبدًا للمخصص).
أعراض
السبب / الإصلاح
الفجوات / الارتفاعات الفارغة (5-7 ملايين) في المخطط
انخفاضات المحتوى - إما GOP بين إطارات I (يتم امتصاصها بواسطة المخزن المؤقت 1 ثانية) أو كشك محتوى جماعي (يتم التعامل معه عن طريق إعادة التوزيع).
قطرات > 0 تسلق
قائمة انتظار الإرسال ممتلئة - المحتوى أعلى من الحد الأقصى.
تظل إحدى القنوات ذات معدل بت منخفض/QP مرتفع
إما محتوى ثابت (صحيح - فهو يطلق النطاق الترددي) أو الحد الأقصى المنخفض جدًا في ملف التعريف.
تعثر الرسم البياني / مسح الحافة اليسرى
من جانب العميل - التحديث الثابت (Ctrl+Shift+R) لحزمة JS الجديدة.
الحد الأقصى % / لا يتغير المخزن المؤقت بعد التحرير
إعادة عرض LiveView — تحديث صعب.
SAT UDP SSM ─┐
gst_encoder.py لكل تيار: إدخال SAT UDP SSM → nvh264enc rc-mode=cbr.
حلقة لكل إدخال (استرجاع TCP من جهاز التشفير)، استنزاف ثنائي التمرير (أولوية الصوت، فيديو كامل)، مخصص متناسب، لوحة NULL تمامًا إلى غطاء السلك (CBR)، تمرير PCR من جهاز التشفير.
MPTS واحد (PAT/PMT/SDT يتم إنشاؤه بواسطة NIF) ← بث متعدد UDP على مخرج VLAN.
الصف 1: ⚠ (قضايا التحقق من الصحة) · PNR · الاسم في الإطار (اللون = الحالة).
الصف 2+: الحد الأدنى · المتوسط · الحد الأقصى كيلوبت في الثانية · التعقيد المتوقع Δ منخفض / متوسط / مرتفع / الذروة · فقدان الإدخال · ⚙URL · التشفير ميغابت في الثانية · SID · نوع الخدمة.
اسم اللون = حالة الدفق:
ميغابت في الثانية
خط "الغطاء" الأحمر: سقف سلك CBR (mux.bitrate) - يمتلئ NULL حتى هنا.
خط "الإرتفاع N٪" البرتقالي: = الحد الأقصى × شريط تمرير الإرتفاع / 100. تستهدف أهداف معدل البت في التشفير هنا.
المنطقة الرمادية ذات النقاط السوداء بين المحتوى والغطاء = حشوة فارغة (احتياطي غير مستخدم).
انقر على شريط الألوان الخاص بالقناة ← يقوم تلقائيًا بتوسيع بطاقة القناة أدناه.
يقرأ MuxEitAdapter الأحداث من نظام EPG لكل خدمة، ويبني أقسام DVB EIT (الاسم والوقت والمدة والوصف والنوع) ويحزمها في PID 0x12.
يتم حقن EIT مباشرة في NIF mux، بالتساوي في المساحة الخالية (1 حزمة / N الإخراج + p/f بشكل دوري) - لتحل محل سلسلة tsp الخارجية المتقطعة.
الجدول 0x4E - الحدث الحالي + الحدث التالي.
يقوم Mux بشكل دوري بإعادة إنشاء EIT .bin من EPG (~ 15 ثانية) - يصل تغيير جدول EPG إلى السلك دون إعادة التشغيل.
الجداول 0x50/0x51 — الجدول الزمني الكامل للساعات/الأيام المقبلة (المقاطع).
مؤشر التدفق الحقيقي مقابل الحد الأقصى.
-5 ميجابت في الثانية CAP 37000 كيلوبت في الثانية +5 ميجابت في الثانية
أقل (←78): احتياطي NULL أكثر، وأكثر أمانًا، واستخدام أقل إحكامًا للغطاء.
أعلى (←90): استخدام سقف أكثر إحكامًا، وأقل قيمة فارغة.
⚠ ≥88%: يتحول شريط التمرير إلى اللون الأصفر — بالقرب من سقف التجميد ذو الفائض الدائري.
عدم التماثل: التخفيض بشكل موثوق يضيف الاحتياطي؛
يتحكم في مقدار الحد الأقصى الذي تستهدفه برامج التشفير: هدف التشفير = الميزانية × الإرتفاع٪ / 100 (الخط البرتقالي في المخطط).
تفشل إحدى القنوات (تعطل جهاز التشفير / فقدان الإشارة) ⇒ يستمر تشغيل Mux، ولا تتأثر القنوات الأخرى، ويحمل السلك الغطاء (NULL يمتص الانقطاع)، CC = 0 على الناجين.
يتم تمرير PCR وPES PTS/DTS من جهاز التشفير (مجال ساعة واحدة ⇒ متماسك، بدون انحراف).
CAT — الوصول المشروط (فقط عند التخليط / ECM).
EIT — معلومات الحدث (EPG) — من نظام EPG، انظر أدناه.
NIT — معلومات الشبكة (معرف الشبكة، الاسم، تدفق النقل).
PAT — قائمة البرامج (خرائط PNR → PMT PID).
PMT - لكل برنامج: فيديو/صوت/معرفات PCR، وبرامج الترميز، والواصفات.
SDT - أسماء الخدمات ومقدموها (ما يعرضه STB في القائمة).
TDT/TOT — الوقت والتاريخ + الإزاحة المحلية (ساعة STB).