Muxer — Statistical Multiplex

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

MPTS Multiplexer & Adaptive Hybrid Statmux

Pengurus Strim mux memasang berbilang aliran SPTS ke dalam satu output CBR MPTS (DVB/IPTV).

1. Lapisan pengekod (FFmpeg setiap aliran)

Apabila mux induk mendayakan statmux, setiap pengekod FFmpeg menjalankan caped-VBR: -b:v <avg> -minrate <min> -maxrate <max> -bufsize <max×2>.

2. Lapisan mux (saluran paip TSDuck tsp)

tsp -I null (∞ NULL paket @ kadar talian) → -P merge tsp -I ip <stream> (tindih paket sebenar) → -P kesinambungan (drop penggera) → -P pcradjust --bitrate X (menulis semula PCR) → -P pcrverify --jitter-max 500µs → kawal bit penggera →P_monitor

3. Lapisan keluaran (UDP)

kawal pemalam mengeluarkan betul-betul mux.bitrate bps pada wayar.

Saiz yang disyorkan (Σ min / purata / maks vs mux.bitrate)

Bar atas Mux menunjukkan 3 jumlah dengan status warna.

Σ purata ≤ 85 % mux.bitrate — purata jumlah sasaran merentas semua saluran serta audio.

Σ maks ≤ 160 % mux.bitrate — jumlah siling puncak.

Σ min ≤ 50 % mux.bitrate — jumlah lantai pengekod.

Contoh: 4 saluran HD dalam mux DVB-T 19 Mbps

Belanjawan tersedia selepas PSI/SI/EIT: ~18.5 Mbps.

Diagnostik & penggera

Pada ≥ 10 penggera dalam 60-an pemberitahuan denyar muncul dalam UI Mux yang mengesyorkan pengurangan kadar bit.

-P bitrate_monitor --periodik 60 --min/maks ±5% — penggera jika kadar sebenar tersasar melebihi ±5 % daripada sasaran.

-P kesinambungan — menjejaki pembilang kesinambungan TS.

-P pcrverify --jitter-max 500000 — DVB membenarkan PCR jitter ≤ 500 µs.

Gangguan & puncanya

Kebetulan GOP — semua pengekod mengeluarkan bingkai-I secara serentak, kebetulan puncak.

Kehilangan isyarat input — saluran tunggal menjadi hitam, mux diteruskan (terima kasih kepada -I null base).

Langganan berlebihan (puncak berkekalan > kapasiti) — blok/gagap audio ~50-200 ms.

PCR drift — STB gagap setiap beberapa saat.

STB VBV underrun — STB kehilangan penyegerakan dan memperoleh semula (~2-3 s).

tsp parameter saluran paip (mux_worker.ex)

--paket-masukan-maks 4096 / --paket-penyiram-maks 4096 (FIFO dalaman ≈ 0.3 s @ 19 Mbps).

Pengiraan kapasiti empirikal (CLT)

Lencana bar atas `📐 rec X.XM` menunjukkan kapasiti mux yang disyorkan yang diperoleh daripada teorem had pusat.

Warna lencana: 🟢 hijau = penutup ≥ 99.7% rec (konservatif) · 🟡 ambar = antara 99% dan 99.7% · 🔴 merah = penutup < 99% (kurang diperuntukkan, risiko jatuh) · 🔵 biru = penutup tidak ditetapkan.

z-skor setiap sasaran liputan: 90% z=1.28 · 95% z=1.65 · 99% z=2.33 · 99.7% z=3.00 (lalai) · 99.99% z=3.72 (gred siaran).

σ_eff = σ_total × statmux_factor (statmux_factor = 0.7 apabila Statmux HIDUP, jika tidak 1.0)

Nilai yang disyorkan setiap saluran (HD H.264)

Saluran HD 1080p25: purata = 4000-5000 kbps, min = purata × 0.75 (~3000-3750), maks = purata × 1.5 (~6000-7500).

Statmux Hibrid Adaptif

Statmux Hibrid Adaptif ialah mekanisme masa jalan yang mengalihkan kapasiti yang tidak digunakan daripada aliran teras (dilindungi, VBR penuh) kepada aliran seimbang (pengorbanan).

Kapasiti — bagaimana kadar bit dibahagikan

Kapasiti mux 38 Mbps

Keuntungan praktikal (10 strim × purata 3 Mbps, maks 4 Mbps)

Tanpa Statmux Hibrid Adaptif anda mesti saiz mux untuk kes terburuk Σ max.

CBR tulen (pengekod tetap)

VBR tanpa Statmux

Statmux Hibrid Adaptif HIDUP

URL ↔ Eksklusiviti Statmux

Pembatalan input URL tersuai dan Statmux adalah saling eksklusif.

Talian paip (pengekod → transkoder seimbang → mux ffmpeg → tsp)

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

Saiz teras VBR min/avg/maks untuk statmux

Keuntungan statistik hanya berlaku apabila pengekod mempunyai julat VBR yang luas — apabila max ≈ purata pengekod adalah CBR dengan berkesan dan penghala tidak mempunyai apa-apa untuk diagihkan semula.

Contoh berfungsi — 38 Mbps mux, 10 teras HD + 2 seimbang:

Julat yang disyorkan setiap aliran teras:

Petua & penyelesaian masalah

Sekurang-kurangnya 1 aliran seimbang — tanpa satu penghala Adaptive Hybrid tidak mempunyai apa-apa untuk dihancurkan semasa puncak, jadi keuntungan = 0

Saluran muzik dan maklumat ialah calon terbaik — 90 %+ toleransi terhadap penurunan kadar

Jejaki melalui entri log `[balance-router]` — menunjukkan `core_max`, `remaining`, peralihan peringkat untuk setiap 1 s tick

Jika `maks_teras > kapasiti` (amaran CORE OVERPEAK dalam log), kurangkan kiraan strim teras atau rendahkan kadar maks pengekod

Aliran kerja operator

Tambahkan strim pada mux (tugasan saluran kekal manual)

Togol Statmux pada pengepala mux (cip kuning).

Tandai aliran korban melalui kotak pilihan jingga sebelah kanan — biasanya saluran muzik/maklumat yang penurunan kadar tidak dapat dilihat

Selesai.

StatMux — pemultipleks statistik asli

Berbilang saluran kadar bit berubah berkongsi satu aliran pengangkutan tetap (MPTS).

Kelas: statmux maklum balas gelung tertutup dengan pandangan ke hadapan C1 (maklum balas) ke atas pengekod VBR — prinsip statmux siaran, didorong daripada kerumitan sumber.

Seni bina & aliran data

Architecture diagram

UDP multicast SSM, setiap saluran

Pengekod

kerumitan sumber

Loopback

talian / aliran sendiri

pengagih (Σ ≤ pool)

penampan

padding null → CBR

Kawat CBR pada penutup

jangkakan adegan yang kompleks sebelum berenang

dawai yang diukur - penentukuran

kadar bit sasaran

Setiap saluran berjalan pada barisnya sendiri sehingga ke mux (pengekod berasingan + sambungan gelung balik), di mana semuanya bergabung menjadi satu baris multicast MPTS pada kadar bit tetap yang tepat.

Otak: maklum balas + C1 pandang ke hadapan

Pengalokasi menggabungkan dua isyarat — ramalan daripada kerumitan sumber (ke hadapan) dan wayar yang diukur (ke belakang).

C1 mengukur kerumitan kandungan pada penyahkod — yang mendahului output pengekod mengikut kependaman saluran paip.

Kawat terukur (maklum balas)

Bit per-strim tepat yang dipancarkan oleh mux (kaunter sisi penghantar) menentukur kerumitan → pemetaan kadar bit dan tahan jumlahnya tepat di kolam.

Kebolehhantaran

Tuntutan strim disokong oleh perkara yang sebenarnya dihasilkan oleh pengekod (× ruang kepala puncak).

Kualiti setara

Matlamatnya bukan kadar bit yang sama tetapi kualiti yang sama — tekanan berterusan menggerakkan bit daripada saluran berkualiti tinggi (QP rendah) ke saluran berkualiti rendah (QP tinggi).

Pengagihan semula ramalan

Apabila C1 memberi isyarat saluran jatuh, lebar jalurnya diserahkan kepada yang lain dalam tanda yang sama - mereka naik sebelum jatuh benar-benar sampai ke wayar.

Kolam = penutup N − atas kepala (PSI/EIT) − audio − simpanan (gelangsar).

Permintaan setiap aliran = wayar boleh hantar × C1 pandangan ke hadapan (perubahan kerumitan relatif) + tekanan penyamaan kualiti.

Peruntukan kumpulan berkadar mengikut permintaan, diapit kepada [min, maks] daripada profil video;

Sasaran pengekod = peruntukan / penentukuran (per-strim EMA diukur/sasaran);

Servo tahan penampan mengekalkan tahap baris gilir pada ~1 s (jalur), hentian belakang kecemasan pada beban lampau;

Wayar CBR: penimbal + padding null + pacing

Outputnya ialah aliran CBR tepat pada penutup yang dikonfigurasikan.

Penampan berdiri ~1 s

Baris gilir hantar memegang paras berdiri ~1 s wayar yang menyerap penurunan GOP subsaat (antara bingkai-I).

Pelapik null

Apabila kandungan berada di bawah had, perbezaan diisi dengan paket null MPEG-TS (PID 0x1FFF).

Pacing tepat

Egress diatur mengikut had yang tepat (busy-spin ABSTIME);

Carta output (sungai)

Graf bertindan langsung bagi wayar sebenar — setiap jalur adalah satu saluran, mengalir dengan lancar dari kanan.

Jalur berwarna

Setiap saluran mempunyai warna yang stabil;

Cap / baris maks

Garis putus-putus di bahagian atas = topi yang dikonfigurasikan (siling wayar).

Band null

Jalur putih bertitik di atas = padding null (kapasiti bebas).

Kejatuhan markah

Tanda merah pada garis masa = limpahan hantar-baris (turun).

Julat (30s–30m)

Butang menukar tetingkap masa serta-merta (sebelah pelanggan), yang aktif mempunyai latar belakang kelabu.

Petua alat

Tuding menunjukkan kadar bit setiap saluran, QP dan indeks kualiti pada masa itu (nilai sejarah, bukan langsung).

had %

Tahap peraturan kolam semasa (pool/(pool−trim)).

Rizab (gelangsar)

Jalur toleransi di atas had — berapa banyak yang perlu disimpan sebagai rizab batal.

Penampan (jatuh)

Pengepala menunjukkan % kegunaan gilir hantar dan kejatuhan kumulatif.

GOP

Panjang GOP biasa untuk semua saluran dalam mux (dikunci ke dalam profil video pada permulaan).

VBV

Saiz penimbal VBV pengekod (ms).

Strim kad & negeri

Setiap saluran dalam mux mempunyai kad dengan nama, PNR, kadar bit semasa dan sasaran serta keadaan:

Berjalan — saluran sedang mengekod dan mengalir ke wayar.

Bermula — pengekod sedang berputar / mengendap.

Mati — saluran berada dalam mux tetapi tidak berjalan (0 kbps).

Ralat — input hilang / pengekod ranap.

Jadual PSI/SI (set DVB lengkap)

StatMux menjana set lengkap jadual MPEG-TS / DVB mandatori terus dalam mux NIF — tiada sisipan SI luaran.

Jadual

PID

Selang waktu

Tujuan / sumber

EIT ↔ EPG: integrasi penuh

EIT (Jadual Maklumat Acara, PID 0x12) tidak statik — ia disambungkan sepenuhnya ke sistem EPG aplikasi.

Saiz saluran (min / purata / maks)

min = tingkat bawah (tempat kejadian statik).

purata = tahap sasaran.

maks = siling (ruang kepala VBR untuk puncak/potongan).

Contoh (purata): SD 1.5–2.5M · HD 2.5–4M · FHD 4–6M · UHD 12–18M.

Kaitan dengan siaran statmux

Kami melakukan pemultipleksan statistik sebenar — pengagihan semula bit dinamik merentas saluran VBR yang berkongsi wayar tetap, dengan penyamaan kualiti.

Apa yang kita ada

Wayar CBR pada penutup · penimbal 1 s · peruntukan berkadar setiap aliran · C1 ke hadapan suapan · penyamaan kualiti · pengagihan semula ramalan · padding nol · rentak tepat.

Di mana kita berbeza

statmux siaran menggunakan anggaran herotan kadar pengekod (kos bingkai tepat, pengekod adalah hamba kepada pengalokasi).

Menyelesaikan masalah

simptom

Punca / betulkan

Jurang / lonjakan nol (5–7M) dalam carta

Penurunan kandungan — sama ada GOP antara bingkai-I (diserap oleh penimbal 1 s) atau gerai kandungan kolektif (dikendalikan melalui pengagihan semula).

Turun > 0 pendakian

Hantar baris gilir melimpah — kandungan melebihi had.

Satu saluran kekal kadar bit rendah / QP tinggi

Sama ada kandungan statik (betul — ia mengeluarkan lebar jalur) atau maks terlalu rendah dalam profil.

Carta tergagap / padam tepi kiri

Bahagian pelanggan — muat semula keras (Ctrl+Shift+R) untuk berkas JS baharu.

cap % / buffer tidak berubah selepas diedit

Paparan semula LiveView — muat semula keras.

Seni bina (hujung ke hujung)

SAT UDP SSM ─┐

gst_encoder.py setiap strim: SAT UDP SSM input → nvh264enc rc-mode=cbr.

Gelang setiap input (gelung balik TCP daripada pengekod), longkang 2-laluan (keutamaan audio, video penuh), pengalokasi berkadar, pad NULL tepat kepada penutup wayar (CBR), pas-lalu PCR daripada pengekod.

Satu MPTS (PAT/PMT/SDT dijana oleh NIF) → UDP berbilang hantaran pada VLAN keluaran.

Baris 1: ⚠ (isu pengesahan) · PNR · nama dalam bingkai (warna = keadaan).

Baris 2+: min·avg·maks kbps · ramalan kerumitan Δ rendah/med/tinggi/puncak · INPUT HILANG · ⚙URL · pengekod Mbps · SID · service_type.

Warna nama = keadaan aliran:

Mbps

Garis 'cap' merah: siling CBR wayar (mux.bitrate) — NULL diisi sehingga di sini.

Baris 'headroom N%' jingga: = topi × peluncur ruang kepala / 100. Sasaran set_bitrate pengekod disasarkan ke sini.

Kawasan kelabu dengan titik hitam antara kandungan dan penutup = NULL padding (rizab tidak digunakan).

Klik jalur warna saluran → mengembangkan kad saluran itu secara automatik di bawah.

Jadual

MuxEitAdapter membaca acara daripada sistem EPG bagi setiap perkhidmatan, membina bahagian DVB EIT (nama, masa, tempoh, penerangan, genre) dan membungkusnya ke PID 0x12.

EIT disuntik terus dalam mux NIF, sama rata KE dalam ruang kosong (1 paket / N output + p/f secara berkala) — menggantikan lata tsp luaran yang pecah.

Jadual 0x4E — acara yang sedang berjalan + seterusnya.

Mux menjana semula EIT .bin secara berkala daripada EPG (~15 s) — perubahan jadual EPG sampai ke wayar tanpa dimulakan semula.

Jadual 0x50/0x51 — jadual penuh jam/hari ke hadapan (segmen).

Tolok beza (di atas carta)

Penunjuk aliran sebenar lwn had.

-5 Mbps CAP 37000 kbps +5 Mbps

Gelangsar ruang kepala (78–90 %, lalai 85)

Rendah (→78): lebih banyak rizab NULL, lebih selamat, penggunaan penutup kurang ketat.

Lebih tinggi (→90): penggunaan penutup yang lebih ketat, kurang NULL.

⚠ ≥88 %: peluncur bertukar menjadi kuning — dekat dengan siling beku limpahan gelang.

Asimetri: menurunkan dengan pasti menambah rizab;

Mengawal berapa banyak had yang disasarkan oleh pengekod: sasaran pengekod = belanjawan × ruang kepala% / 100 (garis oren dalam carta).

Kehilangan isyarat / kegagalan saluran (pengasingan)

Satu saluran gagal (pengekod ranap / kehilangan isyarat) ⇒ mux terus berjalan, saluran lain tidak terjejas, wayar memegang penutup (NULL menyerap gangguan), CC=0 pada mangsa yang terselamat.

PCR / masa

PCR dan PES PTS/DTS adalah lulus daripada pengekod (domain jam tunggal ⇒ koheren, tiada drift).

CAT — akses bersyarat (hanya apabila berebut / ECM).

EIT — maklumat acara (EPG) — daripada sistem EPG, lihat di bawah.

NIT — maklumat rangkaian (ID rangkaian, nama, aliran pengangkutan).

PAT — senarai program (peta PNR → PMT PID).

PMT — setiap program: video/audio/PCR PID, codec, deskriptor.

SDT — nama perkhidmatan dan pembekal (apa yang ditunjukkan oleh STB dalam senarai).

TDT/TOT — masa dan tarikh + ofset setempat (jam STB).

TSDuck Plugins Used

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