Intel Media Transport Library (MTL) ile ST 2110: FFmpeg ve OBS Üzerinden Software-Based Media Transport

Intel Media Transport Library (MTL) ile ST 2110: FFmpeg ve OBS Üzerinden Software-Based Media Transport
Özet
- Intel Media Transport Library (MTL): ST 2110 uyumlu media transport için COTS sunucular üzerinde çalışan software data-plane kütüphanesi
- Ana problem: ST 2110-20 gibi uncompressed media akışlarında packet pacing, PTP timing, jitter, throughput ve packet loss toleransı çok sıkıdır
- MTL yaklaşımı: DPDK PMD, AF_XDP veya kernel socket backend ile user-space packet processing ve düşük gecikmeli RTP/UDP media transport
- FFmpeg entegrasyonu: MTL plugin, FFmpeg’e
mtl_st20pinput/output device ekler; FFmpeg doğrudan ST 2110-20 raw video alıp gönderebilir - OBS entegrasyonu: MTL ekosisteminde OBS Studio plugin desteği vardır; OBS tabanlı production/test workflow’ları ST 2110 dünyasına bağlanabilir
- Konumlandırma: MTL, NMOS control plane değildir; ST 2110 media packet TX/RX data plane katmanıdır
Not: Bu yazı ST 2110 kampüs, NMOS, MXL ve FFmpeg/GStreamer yazılarının data-plane tarafını tamamlar. Burada amaç MTL’i “bir medya uygulaması” değil, ST 2110 için software media transport katmanı olarak anlatmaktır.
1. ST 2110 neden software için zordur?
ST 2110’u anlamak kolay görünebilir: RTP paketleri var, multicast var, video/audio/data akıyor. Zor olan kısım bu akışın broadcast kalitesinde, real-time ve deterministik davranmasıdır.
Özellikle ST 2110-20 uncompressed video için:
- veri hızı çok yüksektir
- paketler belirli zaman aralıklarıyla çıkmalıdır
- ST 2110-21 pacing davranışı önemlidir
- PTP zamanına göre senkron kalmak gerekir
- multicast network drop ve jitter’a tolerans sınırlıdır
- CPU, memory, NIC ve PCIe yolu birlikte çalışmalıdır
Klasik Linux kernel network stack ile yüksek bitrate ST 2110 üretmek veya almak bazı senaryolarda mümkün olsa da deterministik pacing ve düşük jitter için yeterli olmayabilir. Bu yüzden broadcast ST 2110 dünyasında FPGA, SmartNIC veya özel donanım çözümleri uzun süre öne çıktı.
Intel MTL’in iddiası burada başlar: ST 2110 transport’u COTS server + uygun NIC + optimized software data plane ile yapılabilir hale getirmek.
2. Intel MTL nedir?
Media Transport Library (MTL), Intel/OpenVisualCloud ekosisteminde geliştirilen software tabanlı real-time media transport kütüphanesidir. Hedefi, managed IP network üzerinde ST 2110 uyumlu media stream’lerini yüksek throughput ve düşük latency ile göndermek/almak.
MTL’in önemli özellikleri:
- DPDK PMD backend
- AF_XDP + eBPF backend
- kernel socket backend
- user-space LibOS UDP stack
- PTP hardware timestamp offload
- ST 2110-20 video, ST 2110-30 audio, ST 2110-40 ANC
- ST 2110-21 pacing
- ST 2022-7 redundancy
- ST 2110-22 plugin interface
- FFmpeg plugin
- OBS Studio plugin
- Python/Rust bindings ve native C/C++ API
- lisans: BSD-3-Clause
Bu diyagramdaki kritik ayrım: MTL bir media application değildir. FFmpeg, OBS veya custom application medya üretir/tüketir; MTL bu medyanın ST 2110 uyumlu packet transport tarafını üstlenir.
2.1 NIC desteği: E810/E830 neden özellikle önemli?
MTL Ethernet desteğini üç backend üzerinden geniş tutar: DPDK PMD, AF_XDP ve kernel socket. Ancak pratikte her NIC aynı ST 2110 davranışını vermez.
Intel dokümantasyonundaki önemli ayrım şudur:
- günlük geliştirme ve doğrulama ağırlıklı olarak Intel E810 ve Intel E830 serisi kartlarda yapılır
- DPDK’nin desteklediği başka NIC’ler teorik olarak kullanılabilir, ancak durumları aynı seviyede garanti edilmez
- narrow pacing TX için Intel E810/E830 + DPDK PMD kombinasyonu özellikle önemlidir; diğer kullanım şekilleri genelde TSC tabanlı pacing ile wide/broad pacing seviyesinde kalır
- E810 için ICE driver/DDP package ve firmware sürümü kritik olabilir
- X710/CVL gibi daha eski veya farklı Intel NIC’ler bazı test/benchmark bağlamlarında görülebilir, fakat yeni ST 2110 narrow pacing hedefinde E810/E830 daha doğru başlangıç noktasıdır
Bu yüzden production POC için “Intel NIC var” demek yeterli değildir. Şu bilgileri en baştan netleştirmek gerekir:
| Soru | Neden önemli? |
|---|---|
| NIC modeli E810/E830 mü? | narrow pacing ve güncel doğrulama için en güvenli başlangıç |
| Driver/firmware/DDP paketi hangi sürüm? | ICE tabanlı NIC’lerde feature ve stability etkiler |
| NIC hangi NUMA node’a bağlı? | CPU core pinning ve memory locality için kritik |
| PCIe bandwidth yeterli mi? | 4K/8K veya çoklu flow’da darboğaz olabilir |
| SR-IOV/VF kullanılacak mı? | VM/container mimarisinde data path davranışını değiştirir |
2.2 DPDK, AF_XDP ve kernel socket nasıl seçilir?
MTL üç ana data path sunar ama bunlar eşdeğer değildir.
| Backend | Ne zaman seçilir? | Artı | Eksi |
|---|---|---|---|
| DPDK PMD | production POC, yüksek bitrate, ST 2110-21 pacing, E810/E830 | en yüksek kontrol, kernel bypass, narrow pacing desteği | NIC bind/VFIO, hugepages, NUMA/core tuning, operasyonel karmaşıklık |
| AF_XDP | kernel ile daha uyumlu kalmak, cloud/container denemeleri, DPDK kadar agresif kernel bypass istememek | XDP/eBPF ekosistemi, kernel sahipliği korunur | kernel/libbpf/libxdp gereksinimi, performans ve feature set NIC/kernel’e bağlı |
| Kernel socket | hızlı deneme, DPDK desteklemeyen NIC, düşük riskli lab | kurulumu daha kolay, normal NIC/IP modeli | performans sınırlı, strict ST 2110 timing için production yolu gibi düşünülmemeli |
Kural olarak:
- ST 2110-20 high-bitrate TX/RX ve production POC: E810/E830 + DPDK PMD ile başlayın.
- Deneme/lab ve kernel entegrasyonu önemliyse: AF_XDP değerlendirilebilir.
- Sadece konsept kanıtı veya NIC uyumsuzluğu varsa: kernel socket fallback kullanılabilir.
2.3 Sistem gereksinimleri: tek bir minimum yok
MTL için “şu CPU yeter” gibi evrensel bir minimum vermek yanıltıcı olur. 1080p50 tek flow, çoklu 4K flow ve 8K çok farklı sistem ister. Intel’in compliance/benchmark dokümanlarında örnek referans sistem olarak çift soketli Intel Xeon Platinum 8358, 64 core, 512 GB RAM ve 100G NIC gibi güçlü konfigürasyonlar görülür. Bu bir “minimum” değil, ölçüm yapılan referans platformdur.
Pratik başlangıç olarak, tek bir 1080i50/1080p50 ST 2110-20 flow için modern bir 8 çekirdekli sunucu, Intel E810/E830 sınıfı NIC, doğru driver/firmware/DDP paketi, hugepages ve izole edilmiş birkaç CPU core makul bir lab başlangıcı olabilir. Ancak bunu production kapasite varsayımı gibi okumamak gerekir; ikinci flow, 4K, ST 2022-7 veya encode/decode eklediğiniz anda ölçüm zorunludur.
Pratik başlangıç checklist’i:
| Alan | Başlangıç noktası |
|---|---|
| CPU | core pinning yapabilecek yeterli fiziksel core; RX/TX, app ve housekeeping core’ları ayrılmalı |
| NUMA | NIC, memory ve worker core aynı NUMA node üzerinde tutulmalı |
| Memory | hugepages zorunlu/pratik olarak gerekli; kernel socket backend’de bile hugepage gerekir |
| Kernel | AF_XDP için modern Linux kernel + libbpf/libxdp; DPDK için desteklenen kernel/IOMMU/VFIO |
| DPDK | MTL build guide’daki DPDK sürümü ve patch gereksinimleri takip edilmeli |
| NIC | E810/E830 production POC için en güvenli başlangıç; firmware/driver/DDP sabitlenmeli |
| OS tuning | CPU frequency governor, IRQ affinity, isolated cores, C-state ayarları ölçülmeli |
Yani COTS sunucu kullanmak “herhangi bir sunucu olur” anlamına gelmez. COTS burada doğru NIC, doğru CPU/NUMA yerleşimi ve doğru network tuning ile anlam kazanır.
3. MTL ST 2110 zincirinde nereye oturur?
ST 2110 sistemini üç düzlemde düşünmek faydalıdır:
| Düzlem | Örnek teknoloji | Görev |
|---|---|---|
| Media data plane | MTL, FPGA gateway, hardware NIC stack | RTP packet TX/RX, pacing, timestamp, throughput |
| Control plane | NMOS IS-04/IS-05/IS-06 | discovery, registration, connection management |
| Application plane | FFmpeg, OBS, playout, mixer, analyzer | video/audio üretme, işleme, encode/decode |
MTL bu tabloda media data plane tarafındadır.
Yani MTL şu soruya cevap verir:
Bu raw video/audio frame’lerini ST 2110 paketleri olarak doğru hızda, doğru zamanlamayla ve doğru NIC üzerinden nasıl gönderip alırım?
Şu sorulara doğrudan cevap vermez:
- Cihazlar birbirini nasıl keşfeder? → NMOS IS-04
- Hangi sender hangi receiver’a bağlanacak? → NMOS IS-05 / orchestration
- Switch multicast flow’u nasıl kuracak? → IS-06 / SDN
- Production graph nasıl yönetilecek? → control/orchestration layer
4. FFmpeg ile MTL çıkışı: mtl_st20p
MTL ekosistemindeki en pratik entegrasyonlardan biri FFmpeg plugin’idir. Bu plugin FFmpeg’e ST 2110-20 progressive/raw video için bir input/output device ekler:
|
|
Bu şu anlama gelir:
- FFmpeg bir ST 2110-20 stream’i input olarak okuyabilir
- FFmpeg raw video frame’lerini ST 2110-20 output olarak gönderebilir
- video pipeline içinde decode/filter/encode/remux işlemleriyle birlikte kullanılabilir
Kritik uyarı: Bu,
apt install ffmpegveya Homebrew ile gelen standart upstream FFmpeg özelliği değildir. MTL dokümantasyonundaki plugin, FFmpeg’in MTL patch’leri ve--enable-mtlile özel build edilmesini gerektirir. Production runbook’ta FFmpeg binary’sinin hangi commit/tag, hangi MTL release ve hangi build flags ile üretildiği açıkça yazılmalıdır.
4.1 FFmpeg ile ST 2110-20 alma
Kavramsal örnek:
|
|
Burada FFmpeg, MTL device üzerinden ST 2110-20 video alır ve bunu örnekte H.264’e encode eder. Gerçek production’da codec, pixel format, NIC PCI address, multicast IP, port ve payload type ortamınıza göre değişir.
4.2 FFmpeg ile ST 2110-20 gönderme
Kavramsal output zinciri:
|
|
Bu model özellikle şu işler için değerli:
- test pattern veya file source’u ST 2110 fabric’e göndermek
- software playout prototipi yapmak
- ST 2110 receiver/analyzer geliştirmek
- cloud/edge node’dan ST 2110 çıkışı üretmek
- lab ortamında kamera veya gateway taklidi yapmak
4.3 FFmpeg plugin’i neden önemli?
FFmpeg broadcast ekipleri için zaten günlük araçtır. MTL plugin ile FFmpeg şu role gelir:
- ST 2110 test sender
- ST 2110 receiver + transcoder
- file-to-ST 2110 bridge
- ST 2110-to-file recorder
- ST 2110-to-HLS/SRT gateway prototipi
Bu, ST 2110 denemeleri için özel donanım beklemeden software tabanlı lab kurmayı kolaylaştırır. Ancak production’a geçerken timing compliance, NIC seçimi ve release tag çok dikkatli değerlendirilmelidir.
5. OBS Studio ve MTL desteği
MTL dokümantasyonu OBS Studio plugin desteğini de ekosistem parçası olarak listeler. Bu ilginçtir çünkü OBS normalde RTMP/SRT/NDI/screen capture gibi creator ve streaming dünyasına daha yakın bilinir. MTL plugin ile OBS, ST 2110 workflow’larında bir software source veya production tool olarak denenebilir.
OBS + MTL fikri şu senaryolarda anlamlı olabilir:
- ST 2110 lab ortamına OBS sahnesi göndermek
- grafik, browser source veya screen capture’ı ST 2110 fabric’e taşımak
- eğitim/demo ortamında software-defined production göstermek
- broadcast testlerinde hızlı source üretmek
- OBS kompozisyonunu MTL/FFmpeg tabanlı ST 2110 çıkış zincirine bağlamak
Burada dikkatli ifade etmek gerekir: OBS + MTL üretim sistemi yerine hemen konulacak olgun bir broadcast switcher değildir. Daha çok software-based production, lab, test, demo ve belirli grafik/source workflow’ları için ilginç bir köprüdür.
Production’a yaklaşmadan önce ayrıca şunlar kontrol edilmelidir:
- OBS plugin’i hangi MTL release ile test edilmiş?
- plugin aktif olarak bakılıyor mu, son commit/release ne zaman?
- OBS sürümü, plugin ABI’si ve işletim sistemi uyumlu mu?
- audio/video sync ve PTP ilişkisi nasıl doğrulanıyor?
- crash durumunda OBS mi, plugin mi, MTL process’i mi restart edilecek?
6. MTL, MXL, FFmpeg ve NMOS birlikte nasıl düşünülür?
Önceki yazılardaki kavramlarla bağlayalım:
| Bileşen | Görev |
|---|---|
| MTL | ST 2110 packet transport data plane |
| FFmpeg | medya decode/filter/encode ve MTL device üzerinden ST 2110 I/O |
| OBS | software scene/source üretimi, MTL plugin ile ST 2110 workflow’a bağlanma |
| MXL | compute cluster içinde media functions arası exchange |
| NMOS | discovery, registration, connection management |
| PTP | ortak zaman temeli |
Bir software-defined broadcast node şöyle görünebilir:
Bu diyagramda MTL ve MXL karışmamalı:
- MTL: network edge’de ST 2110 RTP packet transport
- MXL: compute içinde media exchange
İkisi aynı mimaride birbirini tamamlayabilir.
7. Peki ses işini ne yapacağız?
ST 2110 dünyasında video ve ses aynı stream içinde taşınmaz. SDI’da birlikte akan yapı, IP tarafında ayrı essence akışlarına bölünür:
- video: ST 2110-20
- audio: ST 2110-30 (PCM audio) veya ST 2110-31 (AES3 transparent)
- ancillary data: ST 2110-40
Bu yüzden MTL/FFmpeg ile “video çıkışı verdim, ses de gelir” diye düşünmemek gerekir. Video için mtl_st20p, audio için ayrı ST 2110-30 flow gerekir.
MTL FFmpeg plugin tarafında audio için mtl_st30p desteği vardır. Dokümantasyondaki model şu şekildedir:
7.1 ST 2110-30 audio alma
Örnek: 2 kanal, PCM24, 1 ms packet time ile ST 2110-30 stream’i alıp WAV dosyasına yazmak:
|
|
7.2 ST 2110-30 audio gönderme
Örnek: WAV dosyasını loop ederek ST 2110-30 audio multicast olarak göndermek:
|
|
PCM16 için plugin tarafında mtl_st30p_pcm16 muxer kullanılabilir; demux tarafında pcm_fmt pcm16 verilmelidir.
7.3 Ses tarafında kritik tasarım noktaları
| Konu | Neden önemli? |
|---|---|
| Sampling rate | Broadcast audio genelde 48 kHz; yanlış rate sync sorunları yaratır |
| Channel count | Stereo, 5.1, 8/16 kanal gibi mapping receiver ile uyumlu olmalı |
| Packet time | 1 ms yaygın bir seçimdir; latency ve packet rate’i etkiler |
| Payload type | SDP/NMOS ve receiver tarafıyla eşleşmeli |
| PTP alignment | Video ve audio ayrı stream olduğu için ortak zaman temeli şarttır |
| Stream mapping | Video multicast IP/port ve audio multicast IP/port ayrı yönetilir |
| Monitoring | Ses var mı sorusu packet seviyesinde değil, channel mapping ve ses seviyesi tarafında da izlenmeli |
Gerçek sistemlerde video ve audio flow’ları genelde SDP/NMOS metadata ile birlikte yönetilir. MTL packet transport’u sağlar; hangi audio flow’un hangi video ile ilişkilendirileceği control/orchestration katmanında çözülmelidir.
7.4 ST 2110-40 ANC ne olacak?
ST 2110-40; timecode, captions, AFD, SCTE-104 benzeri ancillary data dünyasını IP essence flow olarak taşır. MTL özellik listesinde ST 2110-40 desteği geçer, ancak FFmpeg plugin örnekleri ST20/ST22 video ve ST30 audio kadar doğrudan “hazır komut” seviyesinde görünmez.
Pratikte ST 2110-40 şu şekilde düşünülmelidir:
- video ve audio gibi ayrı multicast IP/port/payload type ile yönetilir
- receiver tarafında ANC payload parse edilmeden “paket geliyor” demek yeterli değildir
- caption/timecode gibi veriler application layer’da anlamlandırılmalıdır
- NMOS/SDP tarafında video/audio/ANC ilişkisi açık tutulmalıdır
- MTL ile ST40 kullanacaksanız C/C++ API ve sample app tarafındaki ST40 oturumlarını ayrıca incelemek gerekir
Bu yüzden bu yazı ST20 video ve ST30 audio için FFmpeg örneği verirken, ST40’ı production tasarım checklist’i olarak konumlandırıyor. ANC iş akışı olan sistemlerde ilk test sadece packet RX/TX değil, caption/timecode semantik doğrulaması olmalıdır.
7.5 ST 2110-22 / JPEG XS kısa notu
ST 2110-22, uncompressed ST 2110-20 yerine compressed video essence taşır. JPEG XS bu standardın en önemli pratik kullanım alanlarından biridir çünkü düşük gecikmeli, görsel olarak kayıpsıza yakın contribution hedefler.
MTL FFmpeg plugin tarafında mtl_st22 ve mtl_st22p akışları bulunur:
mtl_st22: FFmpeg codec output’unu compressed ST 2110-22 RTP payload olarak taşırmtl_st22p: MTL’in built-in ST22 codec plugin yaklaşımıyla raw frame alıp/vermesini sağlar- JPEG XS için FFmpeg’in MTL yanında SVT JPEG XS gibi ilgili codec desteğiyle build edilmesi gerekir
Basitleştirilmiş JPEG XS output fikri:
|
|
ST 2110-22’yi yazıda yalnızca “deney” diye bırakmak eksik olurdu; doğru konumlandırma şu: yüksek bandwidth uncompressed ST20 yerine düşük gecikmeli compressed essence istediğinizde MTL + ST22 + JPEG XS ayrı bir değerlendirme başlığıdır.
Bu örneğin “basitleştirilmiş” diye işaretlenmesinin nedeni komutun tek başına yeterli olmamasıdır: FFmpeg’in hem MTL plugin’i hem de SVT JPEG XS codec desteğiyle build edilmesi, receiver’ın payload_type, st22_codec, frame rate ve SDP/NMOS metadata beklentilerinin eşleşmesi gerekir. Production testinde ayrıca latency, visual quality ve packet pacing ayrı ölçülmelidir.
8. Gerçek dünya senaryoları
MTL’i soyut bir library olarak değil, birkaç somut workflow içinde düşünmek daha doğru olur.
8.1 Software playout node
Bir dosya veya render output’u FFmpeg ile okunur, video ST 2110-20 olarak, audio ST 2110-30 olarak fabric’e gönderilir.
|
|
Bu senaryoda dikkat: video/audio sync, PTP alignment, asset channel mapping ve receiver SDP/NMOS bilgisi doğru olmalıdır.
8.2 OBS graphics source to ST 2110
OBS sahnesi grafik, browser source, screen capture veya basit compositing için kullanılır. MTL plugin veya FFmpeg handoff ile ST 2110 fabric’e source üretir.
Bu, özellikle demo, eğitim, lab ve hızlı grafik source üretimi için mantıklıdır. Ana production switcher yerine değil, software source üretici olarak düşünmek daha güvenlidir.
8.3 ST 2110 receiver + recorder
MTL RX ile video/audio alınır, FFmpeg dosyaya yazar veya proxy formatına encode eder.
|
|
Bu compliance kayıt, monitoring, proxy üretimi veya troubleshooting için faydalı olabilir.
8.4 Cloud/edge gateway
ST 2110 fabric’ten gelen video/audio software node’da alınır, SRT/HLS/DASH gibi çıkışlara dönüştürülür.
|
|
Bu senaryo, ST 2110 tesisi ile OTT/cloud dünyası arasında software gateway kurmak için anlamlıdır.
8.5 Lab/test generator
Özel donanım beklemeden FFmpeg + MTL ile test sinyali üretilebilir:
- color bars veya test pattern
- PCM test tone
- farklı payload type ve packet time denemeleri
- receiver timing parser testleri
- ST 2022-7 path testleri
8.6 JPEG XS / ST 2110-22 contribution POC
Uncompressed ST 2110-20 bant genişliği yüksek geldiğinde, düşük gecikmeli compressed essence için ST 2110-22/JPEG XS ayrı bir test senaryosu olabilir.
|
|
Bu workflow’da sadece paket akışı değil; JPEG XS encode latency, visual quality, payload type, st22_codec, SDP/NMOS metadata ve receiver uyumu birlikte doğrulanmalıdır.
9. Production checklist
MTL ile ST 2110 kurarken software’den çok sistem mühendisliği önemlidir.
| Alan | Kontrol |
|---|---|
| NIC | desteklenen Intel NIC, doğru driver, firmware, PCIe bandwidth |
| Backend | DPDK PMD mi, AF_XDP mi, kernel socket mi? |
| CPU | core pinning, NUMA locality, isolated cores |
| Memory | hugepages, DMA, cache locality |
| PTP | SMPTE ST 2059 profil, IEEE 1588 PTPv2, grandmaster redundancy, PHC/system clock sync, hardware timestamp, offset monitoring |
| Network | multicast, IGMP/PIM, QoS, VLAN, MTU |
| ST 2110-21 | packet pacing narrow/wide compliance |
| Redundancy | ST 2022-7 gerekiyorsa path isolation |
| Observability | packet loss, jitter, RX timing parser, logs, metrics |
| Release | main branch yerine evaluated/release tag kullanımı |
Intel MTL GitHub sayfasındaki önemli uyarı da burada hatırlanmalı: main branch test/evaluation amaçlı olabilir; değerlendirilen kod release tag’leriyle takip edilmelidir.
PTP satırı özellikle hafife alınmamalıdır. ST 2110’da “PTP var” demek yeterli değildir; grandmaster seçimi, BMCA davranışı, boundary/transparent clock tasarımı, NIC PHC offset’i, ptp4l/phc2sys veya MTL’in built-in PTP yaklaşımı ve alarm eşikleri ayrı ayrı doğrulanmalıdır. Video/audio ayrı flow olduğu için PTP hatası çoğu zaman A/V sync problemi olarak görünür.
COTS sunucu tarafında da en sık sorunlar şunlardır:
- CPU scheduling jitter
- yanlış NUMA yerleşimi
- PCIe bandwidth veya slot topolojisi
- NIC firmware/driver/DDP uyuşmazlığı
- hugepage ve VFIO izinleri
- shared host üzerinde noisy neighbor etkisi
- container/VM içinde SR-IOV ve clock sync karmaşıklığı
10. Nerede kullanılır?
MTL’i özellikle şu işlerde düşünürdüm:
- ST 2110 software playout prototipi
- ST 2110 test signal generator
- ST 2110 receiver/analyzer
- FFmpeg
mtl_st20p/mtl_st30pile ST 2110-to-file recorder - file-to-ST 2110 lab sender, video ve audio ayrı flow’lar halinde
- OBS scene-to-ST 2110 demo/source workflow
- edge/cloud ST 2110 gateway denemeleri
- JPEG XS / ST 2110-22 low-latency contribution POC
- ST 2110-40 ANC packet transport ve application-layer parsing testleri
- ST 2022-7 redundancy validation
- COTS server üzerinde broadcast data-plane POC
Nerede dikkatli olmak gerekir?
- full production router replacement
- PTP ve network kontrolü zayıf ortamlarda
- non-deterministic shared compute host’larda
- NIC/driver/firmware standardize edilmemiş sistemlerde
- NMOS/orchestration olmadan büyük kampüs operasyonunda
- FFmpeg/OBS plugin release ve build zinciri pin edilmemiş ortamlarda
MTL için ayrı bir kurulum makalesi mantıklı olur: E810/E830 NIC hazırlığı, DPDK binding, hugepages, patched FFmpeg build, SVT JPEG XS ve örnek sender/receiver testleri bu yazının kapsamını aşacak kadar detaylıdır.
11. SDP: ST 2110 stream nasıl tarif edilir?
MTL packet transport tarafını çözer, ama gerçek ST 2110 sistemlerinde receiver’ın “ne alacağını” bilmesi gerekir. Bu bilgi genellikle SDP (Session Description Protocol) ile tarif edilir ve NMOS IS-04/IS-05 gibi kontrol düzlemlerinde de bu metadata kullanılır.
FFmpeg/MTL komutundaki parametrelerin SDP karşılığı kabaca şöyledir:
| MTL / FFmpeg parametresi | SDP karşılığı | Anlam |
|---|---|---|
p_tx_ip / p_rx_ip |
c=IN IP4 ... |
multicast destination/source group |
udp_port |
m=video 20000 ... |
RTP UDP port |
payload_type |
m=... 96, a=rtpmap:96 ... |
dynamic RTP payload type |
video_size |
width, height |
frame boyutu |
pix_fmt |
sampling, depth, colorimetry |
video sampling ve renk bilgisi |
fps / r |
a=framerate |
frame rate |
| PTP domain | ts-refclk, mediaclk |
ortak zaman referansı |
Basitleştirilmiş ST 2110-20 SDP örneği:
|
|
ST 2110-30 audio için ayrı SDP gerekir:
|
|
Bu örnekler production SDP template’i değildir; amaç MTL komut parametreleri ile ST 2110 metadata arasındaki bağı göstermektir. Gerçek sistemde SDP/NMOS metadata, receiver’ın pixel format, payload type, packet time, clock source ve multicast bilgilerini birebir karşılamalıdır.
12. ST 2110-21 pacing: narrow, narrow linear, wide
ST 2110-21, özellikle uncompressed video sender davranışı için kritiktir. Aynı ortalama bitrate’e sahip iki sender, paketleri tamamen farklı ritimlerle gönderebilir. Receiver açısından problem ortalama bitrate değil, microburst ve buffer davranışıdır.
Basit görsel:
|
|
| Tip | Anlam | Pratik etki |
|---|---|---|
| Narrow | çok deterministik ve sıkı pacing | receiver buffer ihtiyacı düşer; sender tarafı daha zor |
| Narrow Linear | daha düzgün doğrusal pacing profili | software sender için iyi hedef; NIC pacing desteği önemlidir |
| Wide | daha bursty sender davranışı | receiver daha fazla buffer toleransı ister |
Intel E810/E830’in önemi burada ortaya çıkar: narrow pacing TX için rate-limit/hardware pacing kabiliyeti DPDK PMD ile birlikte kritik hale gelir. TSC tabanlı software pacing bazı lab senaryolarında yeterli olabilir, ama production ST 2110-21 hedefinde NIC pacing davranışı ayrıca ölçülmelidir.
13. Minimal lab topology
MTL’i öğrenmek için küçük ama doğru kurulmuş bir lab, yanlış yapılandırılmış büyük sistemden daha değerlidir.
Başlangıç lab’ı için:
- tek ST 2110-20 video flow ile başlayın
- sonra ST 2110-30 audio ekleyin
- SDP/NMOS metadata’yı doğrulayın
- PTP offset ve RTP sequence kaybını izleyin
- daha sonra ST 2022-7 veya ST 2110-22 gibi gelişmiş konulara geçin
14. Observability ve sık arıza senaryoları
Production ST 2110 sistemi “çalışıyor” diye bırakılmaz; sürekli ölçülür.
İzlenmesi gerekenler:
- RTP sequence gap / packet loss
- packet inter-arrival jitter
- ST 2110-21 pacing davranışı
- PTP offset ve grandmaster değişimi
- NIC RX/TX drops
- DPDK ring occupancy
- CPU core utilization ve scheduling jitter
- NUMA remote memory access
- audio level ve channel mapping
- SDP/NMOS metadata uyuşmazlığı
Kullanılabilecek araçlar:
- Wireshark RTP/ST 2110 analizleri
ptp4l/phc2syslogları- NIC driver counters
- MTL sample app logları ve RX timing parser
- EBU LIST / JT-NM test metodolojileri
- vendor ST 2110 analyzer cihazları
Sık görülen arızalar:
| Problem | Muhtemel neden |
|---|---|
| Siyah video | yanlış SDP, pixel format uyuşmazlığı, payload type hatası |
| Ses yok | ST30 multicast/port uyuşmazlığı, channel count veya payload type hatası |
| Audio drift | PTP sync problemi, yanlış sampling rate, video/audio clock domain ayrılığı |
| Packet drop | NUMA yanlışlığı, PCIe darboğazı, NIC queue overflow |
| Burst jitter | yanlış pacing mode, kernel path, CPU scheduling jitter |
| Receiver join olmuyor | IGMP/PIM/multicast VLAN problemi |
| RX overrun | CPU affinity, DPDK ring size, IRQ veya core pinning hatası |
| ST 2022-7 failover sorunlu | iki path’in gerçekten bağımsız olmaması veya delay farkı |
| Caption/timecode yok | ST40 payload geliyor ama application layer parse etmiyor |
15. Wireshark filtreleri mini appendix
Sorun giderirken ilk bakılan yerlerden biri paket seviyesidir. Aşağıdaki filtreler hızlı başlangıç içindir; interface, VLAN ve multicast yapınıza göre daraltılmalıdır.
| Amaç | Wireshark display filter |
|---|---|
| Tüm RTP trafiği | rtp |
| Video flow portu | udp.port == 20000 |
| Audio flow portu | udp.port == 30000 |
| PTP mesajları | ptp |
| Belirli multicast grup | ip.dst == 239.168.85.20 |
| Belirli sender IP | ip.src == 192.168.96.2 |
| RTP payload type | rtp.p_type == 96 |
| Belirli SSRC | rtp.ssrc == 0x12345678 |
| RTP sequence hatalarını inceleme | rtp ardından Analyze RTP Streams |
| IGMP join/leave | igmp |
Pratik akış:
- önce
ptpile clock mesajları geliyor mu bakın - sonra
igmpile receiver multicast group’a join oluyor mu kontrol edin udp.port == 20000veyaudp.port == 30000ile flow geliyor mu bakın- RTP stream analysis ile sequence gap ve jitter kontrol edin
- SDP’deki payload type, multicast IP ve UDP port ile capture’ın eşleştiğini doğrulayın
Wireshark tek başına ST 2110 compliance analyzer değildir, ama “paket var mı, doğru flow mu, sequence kırılıyor mu, receiver join olmuş mu?” sorularına hızlı cevap verir.
16. FFmpeg + MTL build appendix
Bu bölüm copy-paste garantili build reçetesi değil; sürümler değiştiği için build guide her zaman resmi MTL dokümanından takip edilmelidir. Ama production runbook için kontrol listesi şu olmalıdır:
- MTL release tag seçin.
- Desteklenen DPDK sürümünü ve gerekiyorsa MTL patch’lerini uygulayın.
- Hugepages ve VFIO/IOMMU ayarlarını hazırlayın.
- NIC driver/firmware/DDP paketini sabitleyin.
- FFmpeg’i MTL patch’leri ve
--enable-mtlile build edin. - ST 2110-22/JPEG XS gerekiyorsa SVT JPEG XS codec desteğini ekleyin.
- Build artifact için commit hash, configure flags ve linked library sürümlerini kaydedin.
Örnek build notu şu bilgileri içermeli:
|
|
Bu bilgiler olmadan “aynı sistemi tekrar kurmak” veya production incident sonrası root cause yapmak çok zorlaşır.
17. Version pinning checklist
ST 2110 software data-plane sistemlerinde rastgele main branch ile production’a çıkmak kötü fikirdir.
| Bileşen | Pin edilmeli mi? | Neden |
|---|---|---|
| MTL release tag | ✅ | test edilmiş kod seviyesi |
| DPDK version | ✅ | PMD davranışı ve patch uyumu |
| FFmpeg commit/build | ✅ | mtl_st20p/st30p/st22 plugin davranışı |
| NIC firmware | ✅ | pacing, timestamp, driver uyumu |
| DDP package | ✅ | E810/E830 feature davranışı |
| Kernel version | ✅ | AF_XDP, VFIO, timing ve driver davranışı |
| PTP config | ✅ | clock domain ve offset davranışı |
| OBS plugin version | ✅ | ABI ve stability |
Production runbook’ta bu liste yoksa sistem tekrarlanabilir değildir.
18. Sonuç
Intel Media Transport Library, ST 2110’u sadece özel hardware dünyasına ait olmaktan çıkarıp software-defined broadcast tarafına yaklaştıran önemli bir data-plane projesidir.
Kısa özet:
FFmpeg ve OBS medya üretir veya işler; MTL bu medyayı ST 2110 uyumlu RTP akışları olarak COTS sunucu ve NIC üzerinden gönderip almayı sağlar.
MTL’i doğru konumlandırmak gerekir:
- codec değildir
- NMOS değildir
- broadcast router değildir
- ST 2110 data-plane kütüphanesidir
FFmpeg mtl_st20p ve mtl_st30p device’ları sayesinde MTL, broadcast mühendislerinin zaten kullandığı en güçlü araçlardan birine bağlanır. OBS plugin desteği ise software-based production tarafında ilginç bir köprü açar. ST 2110-40 ANC ve ST 2110-22/JPEG XS tarafı da gösteriyor ki MTL yalnızca “raw video gönderme” projesi değildir; video, audio, ANC, compressed essence, timing ve NIC pacing birlikte düşünülmesi gereken bir data-plane katmanıdır.
Yine de doğru sonuç şudur: MTL’i production’a almak bir kütüphane eklemekten ibaret değildir. E810/E830 gibi doğru NIC seçimi, DPDK/AF_XDP/backend kararı, PTP/ST 2059 tasarımı, hugepages, NUMA, release tag, FFmpeg patched build ve observability birlikte ele alınmalıdır.
Bu yüzden MTL, ST 2110, MXL ve NMOS birlikte düşünüldüğünde yeni nesil broadcast mimarisi daha net görünür:
NMOS kontrol eder, MTL ST 2110 packet transport’u yapar, MXL compute içi media exchange’i çözer, FFmpeg/OBS/custom app ise medya işleme katmanında çalışır.
Kaynaklar
- Media Transport Library GitHub
- Media Transport Library Documentation
- MTL Design Guide
- MTL Plugin for FFmpeg
- Intel Media Transport Library White Paper
- Intel Tiber Broadcast Suite
- SMPTE ST 2110 Standards
- SMPTE ST 2110-21 Standard
- EBU LIST
- JT-NM Tested Program
- Wireshark RTP Analysis
- İlgili yazılar: ST 2110 kampüs, NMOS, MXL, FFmpeg/GStreamer