Muxer — Statistical Multiplex

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

ایم پی ٹی ایس ملٹی پلیکسر اور اڈاپٹیو ہائبرڈ اسٹیٹمکس

سٹریم مینیجر mux ایک سے زیادہ SPTS اسٹریمز کو ایک CBR MPTS آؤٹ پٹ (DVB/IPTV) میں جمع کرتا ہے۔

1. انکوڈر پرت (FFmpeg فی سلسلہ)

جب پیرنٹ mux میں statmux فعال ہوتا ہے، تو ہر FFmpeg انکوڈر کیپڈ-VBR: -b:v <avg> -minrate <min> -maxrate <max> -bufsize <max×2> چلتا ہے۔

2. Mux تہہ (TSDuck tsp پائپ لائن)

tsp -I null (∞ NULL packets @ line rate) → -P ضم کریں tsp -I ip <stream> (اوورلیز اصلی پیکٹ) → -P تسلسل (ڈراپ الارم) → -P pcradjust --bitrate X (PCRs کو دوبارہ لکھتا ہے) → -P pcrverify --jitter-ormax5 → Pcrverify --jitter-ormax5

3. آؤٹ پٹ پرت (UDP)

ریگولیٹ پلگ ان بالکل mux.bitrate bps تار پر خارج کرتا ہے۔

تجویز کردہ سائز (Σ منٹ / اوسط / زیادہ سے زیادہ بمقابلہ mux.bitrate)

Mux ٹاپ بار رنگ کی حیثیت کے ساتھ 3 رقم دکھاتا ہے۔

Σ اوسط ≤ 85 % mux.bitrate — تمام چینلز کے علاوہ آڈیو پر اوسط ہدف کا مجموعہ۔

Σ زیادہ سے زیادہ ≤ 160 % mux.bitrate — چوٹی کی حد کا مجموعہ۔

Σ منٹ ≤ 50 % mux.bitrate — انکوڈر فلور کا مجموعہ۔

مثال: 19 Mbps DVB-T mux میں 4 HD چینلز

PSI/SI/EIT کے بعد دستیاب بجٹ: ~18.5 Mbps۔

تشخیص اور الارم

60 کی دہائی میں ≥ 10 الارم پر Mux UI میں ایک فلیش نوٹیفکیشن ظاہر ہوتا ہے جس میں بٹریٹ میں کمی کی تجویز ہوتی ہے۔

-P bitrate_monitor --periodic 60 --min/زیادہ سے زیادہ ±5% — خطرے کی گھنٹی اگر اصل شرح ہدف کے ±5% سے زیادہ ہو جاتی ہے۔

-P تسلسل — TS تسلسل کاؤنٹرز کو ٹریک کرتا ہے۔

-P pcrverify --jitter-max 500000 — DVB PCR jitter ≤ 500 µs کی اجازت دیتا ہے۔

خرابیاں اور ان کی وجوہات

GOP اتفاق - تمام انکوڈرز I-frames کو بیک وقت خارج کرتے ہیں، چوٹی کا اتفاق۔

ان پٹ نقصان کا سگنل — سنگل چینل سیاہ ہو جاتا ہے، مکس جاری رہتا ہے (بشکریہ -I null بیس)۔

زیادہ سبسکرپشن (مستقل چوٹیوں> صلاحیت) — بلاکس/آڈیو سٹٹر ~50-200 ms۔

پی سی آر ڈرفٹ — ہر چند سیکنڈ میں STB ہکلانا۔

STB VBV انڈررن — STB مطابقت پذیری کھو دیتا ہے اور دوبارہ حاصل کرتا ہے (~2-3 s)۔

tsp پائپ لائن پیرامیٹرز (mux_worker.ex)

--max-input-packets 4096 / --max-flushed-packets 4096 (اندرونی FIFO ≈ 0.3 s @ 19 Mbps)۔

تجرباتی صلاحیت کا حساب کتاب (CLT)

ٹاپ بار بیج `📐 rec X.XM` مرکزی حد تھیوریم سے اخذ کردہ تجویز کردہ mux صلاحیت کو ظاہر کرتا ہے۔

بیج کا رنگ: 🟢 سبز = ٹوپی ≥ 99.7% rec (قدامت پسند) · 🟡 امبر = 99% اور 99.7% کے درمیان · 🔴 سرخ = ٹوپی <99% (کم پروویژنڈ، قطروں کا خطرہ) · 🔵 نیلا = ٹوپی سیٹ نہیں کی گئی۔

z-اسکور فی کوریج ہدف: 90% z=1.28 · 95% z=1.65 · 99% z=2.33 · 99.7% z=3.00 (default) · 99.99% z=3.72 (براڈکاسٹ گریڈ)۔

σ_eff = σ_total × statmux_factor (statmux_factor = 0.7 جب Statmux آن ہو، ورنہ 1.0)

فی چینل تجویز کردہ اقدار (HD H.264)

1080p25 HD چینل: اوسط = 4000-5000 kbps، منٹ = اوسط × 0.75 (~3000-3750)، زیادہ سے زیادہ = اوسط × 1.5 (~6000-7500)۔

انکولی ہائبرڈ اسٹیٹمکس

Adaptive Hybrid Statmux ایک رن ٹائم میکانزم ہے جو غیر استعمال شدہ صلاحیت کو بنیادی اسٹریمز (محفوظ، مکمل VBR) سے متوازن اسٹریمز (قربانی) میں منتقل کرتا ہے۔

صلاحیت - بٹریٹ کو کس طرح تقسیم کیا جاتا ہے۔

زیادہ گنجائش 38 ایم بی پی ایس

عملی فائدہ (10 سلسلہ × 3 Mbps اوسط، 4 Mbps زیادہ سے زیادہ)

Adaptive Hybrid Statmux کے بغیر آپ کو mux کا سائز بدترین صورت Σ زیادہ سے زیادہ کرنا چاہیے۔

خالص CBR (انکوڈر فکسڈ)

Statmux کے بغیر VBR

اڈاپٹیو ہائبرڈ اسٹیٹمکس آن

URL ↔ Statmux کی خصوصیت

حسب ضرورت URL ان پٹ اوور رائڈ اور Statmux باہمی طور پر خصوصی ہیں۔

پائپ لائن (انکوڈر → متوازن ٹرانسکوڈر → mux ffmpeg → tsp)

┌────────────────────────────┐

سٹیٹمکس کے لیے کور VBR منٹ/اوسط/زیادہ سے زیادہ سائز کرنا

شماریاتی فائدہ صرف اس وقت ہوتا ہے جب انکوڈرز کی وسیع VBR رینج ہوتی ہے — جب زیادہ سے زیادہ ≈ اوسط انکوڈر مؤثر طریقے سے CBR ہو اور راؤٹر کے پاس دوبارہ تقسیم کرنے کے لیے کچھ نہ ہو۔

کام کی مثال — 38 Mbps mux، 10 HD core + 2 متوازن:

تجویز کردہ رینج فی کور اسٹریم:

تجاویز اور خرابیوں کا سراغ لگانا

کم از کم 1 متوازن دھارا — ایک کے بغیر اڈاپٹیو ہائبرڈ راؤٹر کے پاس چوٹیوں کے دوران اسکواش کرنے کے لیے کچھ نہیں ہے، اس لیے حاصل کریں = 0

موسیقی اور معلوماتی چینلز بہترین امیدوار ہیں — 90%+ ریٹ شیڈنگ کے لیے رواداری

`[balance-router]` لاگ انٹریز کے ذریعے ٹریک کریں — ظاہر کرتا ہے `core_max`، `remaining`، ہر 1 s ٹک کے لئے ٹائر ٹرانزیشنز

اگر `core_max > Capacity` (لاگ میں CORE OVERPEAK وارننگ)، کور اسٹریم کی گنتی کو کم کریں یا انکوڈر کی زیادہ سے زیادہ شرح کم کریں

آپریٹر ورک فلو

mux میں اسٹریمز شامل کریں (چینل کی تفویض دستی رہتی ہے)

Mux ہیڈر (پیلا چپ) پر Statmux ٹوگل کریں۔

دائیں طرف کے نارنجی چیک باکس کے ذریعے قربانی کے سلسلے کو نشان زد کریں — عام طور پر موسیقی/معلوماتی چینلز جہاں ریٹ شیڈنگ پوشیدہ ہوتی ہے۔

ہو گیا

StatMux - مقامی شماریاتی ملٹی پلیکس

متعدد متغیر بٹریٹ چینلز ایک فکسڈ ٹرانسپورٹ اسٹریم (MPTS) کا اشتراک کرتے ہیں۔

کلاس: کلوز لوپ فیڈ بیک سٹیٹمکس C1 کے ساتھ وی بی آر انکوڈرز کے ساتھ آگے (فیڈ فارورڈ) — براڈکاسٹ اسٹیٹمکس اصول، ماخذ کی پیچیدگی سے کارفرما۔

فن تعمیر اور ڈیٹا کا بہاؤ

Architecture diagram

UDP ملٹی کاسٹ SSM، فی چینل

انکوڈرز

ماخذ کی پیچیدگی

لوپ بیک

اپنی لائن / ندی

مختص کرنے والا (Σ ≤ پول)

بفر

null padding → CBR

ٹوپی پر CBR تار

ڈوبنے سے پہلے پیچیدہ منظر کی توقع کریں۔

پیمائش شدہ تار - انشانکن

ہدف بٹریٹ

ہر چینل اپنی لائن پر mux (علیحدہ انکوڈر + لوپ بیک کنکشن) تک چلتا ہے، جہاں سب ایک MPTS ملٹی کاسٹ لائن میں بالکل ایک مقررہ بٹریٹ پر ضم ہو جاتے ہیں۔

دماغ: تاثرات + C1 آگے دیکھو

مختص کرنے والا دو سگنلز کو یکجا کرتا ہے — ماخذ کی پیچیدگی (آگے کی طرف) اور ناپے ہوئے تار (پسماندہ) سے ایک پیشین گوئی۔

C1 ڈیکوڈر پر مواد کی پیچیدگی کی پیمائش کرتا ہے - جو پائپ لائن میں تاخیر سے انکوڈر آؤٹ پٹ کی قیادت کرتا ہے۔

ناپے ہوئے تار (رائے)

mux (بھیجنے والے سائیڈ کاؤنٹرز) کے ذریعہ خارج ہونے والے عین مطابق فی اسٹریم بٹس پیچیدگی → بٹریٹ میپنگ کو کیلیبریٹ کرتے ہیں اور جمع کو بالکل پول پر رکھتے ہیں۔

ڈیلیوریبلٹی

سٹریم کے دعوے کی حمایت انکوڈر کی اصل میں کیا چیز ہوتی ہے (× چوٹی ہیڈ روم)۔

مساوی معیار

مقصد مساوی بٹریٹ نہیں ہے بلکہ مساوی معیار ہے — مسلسل دباؤ اعلی معیار کے چینلز (کم QP) سے بٹس کو کم معیار والے (اعلی QP) کی طرف لے جاتا ہے۔

پیشین گوئی کی دوبارہ تقسیم

جب C1 کسی چینل کو گرنے کا اشارہ دیتا ہے، تو اس کی بینڈوتھ کو اسی ٹک میں دوسروں کے حوالے کر دیا جاتا ہے - وہ ڈراپ کے اصل میں تار تک پہنچنے سے پہلے ریمپ کر دیتے ہیں۔

پول = کیپ N - اوور ہیڈ (PSI/EIT) - آڈیو - ریزرو (سلائیڈر)۔

فی سٹریم ڈیمانڈ = ڈیلیور ایبل وائر × C1 آگے نظر (متعلقہ پیچیدگی میں تبدیلی) + معیار کے برابر دباؤ۔

طلب کے لحاظ سے متناسب پول مختص، ویڈیو پروفائل سے [کم سے کم، زیادہ سے زیادہ] پر بند

انکوڈر ٹارگٹ = alloc/calibration (فی اسٹریم EMA ماپا/ٹارگٹ)؛

بفر ہولڈ سروو قطار کی سطح کو ~1 s (بینڈ) پر رکھتا ہے، اوورلوڈ پر ایمرجنسی بیک اسٹاپ؛

سی بی آر وائر: بفر + نال پیڈنگ + پیسنگ

آؤٹ پٹ کنفیگرڈ کیپ پر ایک عین مطابق CBR اسٹریم ہے۔

کھڑے بفر ~1 s

بھیجنے کی قطار میں ~ 1 s تار کا کھڑا لیول ہوتا ہے جو ذیلی سیکنڈ GOP ڈپس (I-فریمز کے درمیان) جذب کرتا ہے۔

null padding

جب مواد کیپ سے نیچے ہوتا ہے، فرق MPEG-TS null پیکٹس (PID 0x1FFF) سے بھر جاتا ہے۔

عین مطابق رفتار

باہر نکلنے کی رفتار بالکل درست ٹوپی تک ہوتی ہے (بزی اسپن ABSTIME)؛

آؤٹ پٹ چارٹ (دریا)

اصلی تار کا لائیو اسٹیک شدہ گراف — ہر بینڈ ایک چینل ہے، جو دائیں طرف سے آسانی سے بہہ رہا ہے۔

رنگین بینڈز

ہر چینل کا رنگ مستحکم ہوتا ہے۔

کیپ / زیادہ سے زیادہ لائن

اوپر کی ڈیشڈ لائن = کنفیگرڈ ٹوپی (تار کی چھت)۔

کالعدم بینڈ

اوپر سے نقطے والا سفید بینڈ = خالی پیڈنگ (مفت گنجائش)۔

نشانات گرائیں۔

ٹائم لائن پر سرخ نشانات = بھیجنے کی قطار اوور فلو (ڈراپ)۔

رینج (30s–30m)

بٹن فوری طور پر ٹائم ونڈو کو تبدیل کرتے ہیں (کلائنٹ کی طرف)، فعال کا پس منظر خاکستری ہے۔

ٹول ٹِپ

ہوور اس وقت فی چینل بٹ ریٹ، QP اور کوالٹی انڈیکس دکھاتا ہے (تاریخی قدر، لائیو نہیں)۔

ٹوپی %

موجودہ پول ریگولیشن لیول (پول/(پول−ٹرم))۔

ریزرو (سلائیڈر)

ٹولرنس بینڈ ٹوپی کے اوپر — null ریزرو کے طور پر کتنا رکھنا ہے۔

بفر (قطرے)

ہیڈر % اور مجموعی ڈراپس بھیجنے کی قطار دکھاتا ہے۔

جی او پی

mux میں تمام چینلز کے لیے مشترکہ GOP لمبائی (شروع پر ویڈیو پروفائلز میں مقفل)۔

وی بی وی

انکوڈر VBV بفر سائز (ms)۔

اسٹریم کارڈز اور ریاستیں۔

mux میں ہر چینل کا نام، PNR، موجودہ اور ٹارگٹ بٹریٹ، اور ریاست کے ساتھ ایک کارڈ ہوتا ہے:

چل رہا ہے - چینل انکوڈنگ کر رہا ہے اور تار میں بہہ رہا ہے۔

شروع ہو رہا ہے - انکوڈر گھوم رہا ہے / آباد ہو رہا ہے۔

آف - چینل مکس میں ہے لیکن نہیں چل رہا ہے (0 kbps)۔

غلطی - ان پٹ کھو گیا / انکوڈر کریش ہو گیا۔

PSI/SI میزیں (مکمل DVB سیٹ)

StatMux لازمی MPEG-TS/DVB میزوں کا مکمل سیٹ براہ راست NIF mux میں تیار کرتا ہے — کوئی بیرونی SI داخل کرنے والا نہیں۔

میز

پی آئی ڈی

وقفہ

مقصد / ذریعہ

EIT ↔ EPG: مکمل انضمام

EIT (ایونٹ انفارمیشن ٹیبل، PID 0x12) جامد نہیں ہے - یہ ایپلیکیشن کے EPG سسٹم سے مکمل طور پر وائرڈ ہے۔

چینل کا سائز (منٹ / اوسط / زیادہ سے زیادہ)

منٹ = نچلی منزل (جامد منظر)۔

اوسط = ہدف کی سطح۔

زیادہ سے زیادہ = چھت (چوٹیوں / کٹوتیوں کے لئے VBR ہیڈ روم)۔

مثالیں (اوسط): SD 1.5–2.5M · HD 2.5–4M · FHD 4–6M · UHD 12–18M۔

براڈکاسٹ اسٹیٹمکس سے تعلق

ہم حقیقی شماریاتی ملٹی پلیکسنگ کرتے ہیں — کوالٹی برابری کے ساتھ، ایک مقررہ تار کا اشتراک کرتے ہوئے VBR چینلز میں متحرک بٹ دوبارہ تقسیم۔

جو ہمارے پاس ہے۔

کیپ پر CBR وائر · 1 s بفر · فی اسٹریم متناسب مختص · C1 نظر آنے والی فیڈ فارورڈ · معیار کی برابری · پیش گوئی کی دوبارہ تقسیم · null padding · عین مطابق پیسنگ۔

جہاں ہمارا اختلاف ہے۔

ایک براڈکاسٹ اسٹیٹمکس انکوڈر کی شرح مسخ تخمینہ کا استعمال کرتا ہے (درست فریم لاگت، انکوڈر مختص کرنے والے کا غلام ہے)۔

خرابی کا سراغ لگانا

علامت

سبب / ٹھیک کرنا

چارٹ میں خلاء / صفر اسپائکس (5–7M)

مواد کی کمی — یا تو I-فریمز کے درمیان GOP (1 s بفر کے ذریعے جذب کیا جاتا ہے) یا اجتماعی مواد کا اسٹال (دوبارہ تقسیم کے ذریعے سنبھالا جاتا ہے)۔

قطرے > 0 چڑھنا

قطار بھرتی ہوئی بھیجیں — ٹوپی کے اوپر مواد۔

ایک چینل کم بٹریٹ / ہائی QP رہتا ہے۔

یا تو جامد مواد (درست — یہ بینڈوتھ جاری کرتا ہے) یا پروفائل میں زیادہ سے زیادہ کم۔

چارٹ ہکلانا / بائیں کنارے مٹاتا ہے۔

کلائنٹ سائیڈ — نئے JS بنڈل کے لیے سخت ریفریش (Ctrl+Shift+R)۔

کیپ % / بفر ترمیم کے بعد تبدیل نہیں ہوتا ہے۔

LiveView دوبارہ رینڈر — سخت ریفریش۔

فن تعمیر (آخر سے آخر تک)

SAT UDP SSM ─┐

gst_encoder.py فی سلسلہ: SAT UDP SSM ان پٹ → nvh264enc rc-mode=cbr۔

فی ان پٹ رنگ (انکوڈر سے TCP لوپ بیک)، 2-پاس ڈرین (آڈیو ترجیح، ویڈیو فل)، متناسب مختص کرنے والا، NULL پیڈ بالکل وائر کیپ (CBR)، پی سی آر پاس تھرو انکوڈر سے۔

ایک MPTS (NIF کے ذریعے تیار کردہ PAT/PMT/SDT) → آؤٹ پٹ VLAN پر UDP ملٹی کاسٹ۔

قطار 1: ⚠ (توثیق کے مسائل) · PNR · ایک فریم میں نام (رنگ = ریاست)۔

قطار 2+: min·avg·max kbps · پیش گوئی کی گئی پیچیدگی Δ low/med/high/peak · INPUT LOST · ⚙URL · encoder Mbps · SID · service_type۔

نام کا رنگ = سلسلہ کی حالت:

ایم بی پی ایس

سرخ 'کیپ' لائن: تار CBR چھت (mux.bitrate) — NULL یہاں تک بھرتا ہے۔

اورنج 'ہیڈ روم N%' لائن: = کیپ × ہیڈ روم سلائیڈر / 100۔ انکوڈر سیٹ_بٹریٹ کے اہداف یہاں ہیں۔

مواد اور ٹوپی = NULL پیڈنگ (غیر استعمال شدہ ریزرو) کے درمیان سیاہ نقطوں کے ساتھ سرمئی علاقہ۔

چینل کے کلر بینڈ پر کلک کریں → خود بخود نیچے اس چینل کے کارڈ کو پھیلا دیتا ہے۔

شیڈول

MuxEitAdapter فی سروس EPG سسٹم سے واقعات کو پڑھتا ہے، DVB EIT سیکشنز (نام، وقت، دورانیہ، تفصیل، نوع) بناتا ہے اور انہیں PID 0x12 پر پیکیٹائز کرتا ہے۔

EIT کو براہ راست NIF mux میں انجکشن لگایا جاتا ہے، یکساں طور پر null space میں (1 پیکٹ/N آؤٹ پٹ + p/f وقتاً فوقتاً) — پھٹے ہوئے بیرونی tsp جھرن کو بدلتے ہوئے

ٹیبل 0x4E — فی الحال چل رہا ہے + اگلا ایونٹ۔

mux وقتاً فوقتاً EIT .bin کو EPG (~15 s) سے دوبارہ بناتا ہے — EPG شیڈول میں تبدیلی دوبارہ شروع کیے بغیر تار تک پہنچ جاتی ہے۔

میزیں 0x50/0x51 — مکمل شیڈول گھنٹے/دن آگے (سگمنٹس)۔

ڈِف گیج (چارٹ کے اوپر)

اصلی بہاؤ بمقابلہ ٹوپی کا اشارے۔

-5 Mbps CAP 37000 kbps +5 Mbps

ہیڈ روم سلائیڈر (78–90%، ڈیفالٹ 85)

لوئر (→ 78): زیادہ NULL ریزرو، محفوظ، کم سخت ٹوپی استعمال۔

زیادہ (→90): سخت ٹوپی کا استعمال، کم NULL۔

⚠ ≥88 %: سلائیڈر پیلا ہو جاتا ہے — رنگ اوور فلو منجمد چھت کے قریب۔

غیر متناسب: قابل اعتماد طریقے سے کم کرنے سے ریزرو میں اضافہ ہوتا ہے۔

کنٹرول کرتا ہے کہ انکوڈرز کی کتنی ٹوپی کو ہدف بناتے ہیں: انکوڈر ہدف = بجٹ × ہیڈ روم% / 100 (چارٹ میں نارنجی لائن)۔

سگنل کا نقصان / چینل کی ناکامی (تنہائی)

ایک چینل ناکام ہو جاتا ہے (انکوڈر کریش/سگنل کا نقصان) ⇒ مکس چلتا رہتا ہے، دوسرے چینلز غیر متاثر ہوتے ہیں، تار کیپ کو پکڑتا ہے (NULL بندش کو جذب کرتا ہے)، بچ جانے والوں پر CC=0۔

پی سی آر / ٹائمنگ

PCR اور PES PTS/DTS انکوڈر سے پاس ہوتے ہیں (سنگل کلاک ڈومین ⇒ مربوط، کوئی بڑھے ہوئے نہیں)۔

CAT - مشروط رسائی (صرف اس وقت جب سکرامبلنگ / ECM)۔

EIT — ایونٹ کی معلومات (EPG) — EPG سسٹم سے، نیچے دیکھیں۔

NIT - نیٹ ورک کی معلومات (نیٹ ورک ID، نام، ٹرانسپورٹ سٹریم)۔

PAT — پروگرام کی فہرست (نقشے PNR → PMT PID)۔

PMT — فی پروگرام: ویڈیو/آڈیو/PCR PIDs، کوڈیکس، وضاحت کنندگان۔

SDT - سروس کے نام اور فراہم کنندگان (جو STB فہرست میں دکھاتا ہے)۔

TDT/TOT — وقت اور تاریخ + مقامی آفسیٹ (STB گھڑی)۔

TSDuck Plugins Used

merge
regulate
pat
pmt
sdt
nit
eitinject
timeref
bitrate_monitor
continuity
psimerge
count