Streaming setup z 7. Zimní Karaoke party

Po pauze z minula, kdy stream nebyl jsem se tenhle ročník odhodlal jej udělat. S daleko lepší přípravou a technickým zázemím.

Internetová přípojka

Minulý rok stream nebyl z důvodu absence internetové přípojky v KD. Na okraj řeknu, že důvod proč je situace tak tristní i v roce 2018 je především díky přístupu provozovatele. Zjedodušeně řečeno, internet tam je ale podmínky jeho využití jsou takové, že se vyplatí si zařídit vlastní připojení přes mobilní síť než využívat místní DSLko.

T-Mobile poskytuje službu internetu na den bez FUPu za 99 Kč, jedinou limitací je rychlost, která je omezena na 3/3 Mbps a připojit se lze pouze prostřednictvím 3G sítě. Osobně si myslím, že nebude platné omezení. 3G sítě u nás v podstatě existovaly jen ve městech a LTE jde dnes pokryto skoro všude nedávalo by to smysl pokud by člověk mimo města mohl “vrčet” jen EDGE/GPRS. Tři megabity na stream a nějakou občasnou komunikaci bez problémů postačí a za 99 Kč je to cenově přijatelné.

Mikrotik a připojení přes mobil

Od síťování na Czequestrii 2017 mám vlastní router postavený na platformě x86 Gigabyte GA-C847N s Mikrotik Router OS na CF kartě. Nebyl důvod to měnit, protože to už mám nakonfigurované tak jediné co bylo potřeba vyřešit je jak internetovou konektivitu z mobilu dostat do routeru. Bylo to nakonec velmi jednoduché, RouterOS podporuje Androidí USB tethering. Připojte svůj telefon přes USB kabel k routeru a na telefonu nasdílejte (Tethering) internet přes USB. V WinBoxu se pak objeví telefon jako “LTE Interface”. Sice nevyčítá žádné informace jako třeba sílu signálu ale funguje tak že z telefonu dostanete IP adresu a můžete fungovat. Z podstaty fungováni Tetheringu je nutno připomenout, že internet v tomto konkrétním případě prochází několika NATy zasebou a to:

  • Na routeru (Mikrotik x86)
  • Na mobilním telefonu (Android)
  • U operátora (CGN)

Nejslabším článkem v tomto řetězci je samotný telefon, byť jsem doma tímto způsobem naměřit rychlosti cca 170/40 Mbps s mojí starou Sony Z1 Compact tak připojení může vykazovat některé problémy jako např. neprůchodnost některých protokolů co potřebují ALG. Například SIP, takové služby nemusí fungovat korektně či vůbec pokud je ALG někde po cestě rozbité nebo ho může rozbít kombinace různých ALG na každém NATu. Druhou vadou může být maximální počet souběžných TCP/UDP spojení, které je schopen telefon odbavit případně je může limitovat ze své strany sám operátor na svém CGN. Připojení tedy není radno více exponovat. V podstatě jde o polní použití pro pár počítačů. V tomto případě nikdy nebylo v DHCP leases víc než 6 IP adres. Pro větší datový provoz uvažujte vždycky o přípojení prostřednictvím kabelu například xDSL, CMTS či optiky. Pokud není zbytí a GSM síť je jedinou možností připojení, tak bych doporučil telefon nahradit regulérním USB modemem nebo přímo “převodníkem” s ethernet portem na jedné straně a anténou a LTE modemem na straně druhé. Mikrotik vyrábí několik zařízení co do této kategorie spadají, např. SXT LTE kit, LHG LTE kit nebo wAP 4G kit.

Kamera

Tohle je taky část která na začátku vypadala dost bledě ale nakonec to vyšlo nadmíru dobře – půjčenou Panasonic GH5. Na začátku jsem Tomovi0147 řekl aby vzal svojí starší Canon kameru protože má mírně lepší obraz než moje stará Sony Handycam HDR-CX410VE která šumí jak prase. Jenže týden před karaoke mi napsal, že převrátil celý dům vzhůru nohama a nemůže ji najít :/. Tak jsem oslovil Honzu Fechtnera, člověka kterého jsem potkal u stánku Panasonicu v Pražské Fotoškodě. Vlastní stejně jako já Panasonic Lumix GH5. Jeho odpověď na půjčení byla kladná. Získal jsem tedy druhou GH5 s objektivem 12-100 mm F4 (OLYMPUS M.Zuiko 12-100 mm f/4,0 IS PRO). Objektiv byl naprosto dead-on pro tenhle účel, konstantní clona F4 přes celý zoom rozsah a ohnisková vzdálenost 24-200 mm po přepočtu crop factoru.

Panasonic Lumix GH5 s Olympus 12-100mm F4

Pro napájení kamery jsem použil trochu “větší” akumulátor typu V-Mount Rolux RLC-130S který byl umístěn na micro UPS systému Fotga DP500 III. Do foťáku to bylo připojeno přes “dummy battery” adaptér.

V-Lock akumulátor Rolux RLC-130S
Fotga DP500 III V-Lock microUPS
Fotga DP500 III microUPS detail výstupů
Dummy battery adapter pro GH5

Streamovací PC

Pro stremování jsem zvolil free software video switcher Open Broadcaster (OBS). Nastavení OBS se skládalo z celkem 6 scén. Dvě scény byly Picture-In-Picture (PIP) pohledu stage + miniatury kamery a obráceně kamera + miniatura stage PC. Další dvě scény byly – kamera s logem CZ/SK bronies v levém horním rohu a stage PC s logem v téže místě. Zajisté počítáte správně a chybí vám další 2 scény, to proto že sloužily jako sub-scény pro scény s logem vlevém horním rohu. Udělal jsem to tak protože v obou scénách s PIP byla vždycky miniatura toho druhého. Jenže pokud bych použil jako zdroj pro tenhle objekt scénu s logem tak by logo bylo přítomno i v miniatuře. Takto jsem to obešel kdy jsem vždycky po miniaturu použil scénu bez ní. Další “servisní” scény byly “AFK” když se zrovna nic nedělo, byl tam program a čas, nakonec tam bylo ještě intro které jsem použil na začátku a na zakončení streamu. Grafiku k streamu mi udělal WanderFox, díky!

Železo na kterém se tohle všechno mixovalo se sestávalo s starší kancelářské stanice HP s procesorem Core i7 3770K, 16GB operační paměti, grafickou kartou Nvidia GTX660 a dvěma rotujícími disky o velikosti 2 TB. Jeden pro OS a druhý čistě na nahrávání. Pro stream encoding jsem využil integrovaný Nvidia Encoder na grafické kartě (NVENC), ne že by procesor nestačil pro 720p30 stream nicméně pro 50 Mbps záznam v 1080p30 to procesor tak tak stíhal, při testu to jelo CPU až na 96% což už je na hraně. Jakákoliv aplikace, která by si vzala cykly na CPU by mohla znamenat ztracené snímky v záznamu. Původní idea bylo nahrávat v plné kvalitě YUV 4:4:4 bez subsamplingu chromatické složky jenže pokud jsem přepnul color space v OBS na I444 CPU opět vyskočilo na 80-90% protože encoder na GPU tento profil neumí zpracovat, holt první generace NVENCu, v feature setu je pouze YUV420. Nastavil jsem to tedy na standardní 4:2:0 (NV12) protože stejně na konci bude nahrávka na youtube, kde je všechno ořezáno na 4:2:0. Streamovací služby ať už jde o Twitch,YouTube, FaceBook či Twitter nepodporují stejnak jiný stream než s subsamplingem 4:2:0.

Zachytávání obrazu z kamery jde přes USB 3.0 “dongl” Magewell HDMI to USB v rozlišení 1920×1080 a 30 FPS. Fajn věc, že se tenhle dongl chová jako USB zařízení třídy Universal Video Camera. Prakticky to znamená že funguje na libovolném moderním OS ať už jde o Windows, Linux, MacOS či Android. Jednoduše zapojíte do počítače přes USB 3.0 a pak je na vás jestli do HDMI připojíte kameru nebo klidně další počítač. Podporuje rozlišení až 1920×1080 s 60 FPS s vzorkováním 4:2:2. Za zmíňku určitě stojí i to, že tenhle dongl má interní hardwarový up/down scaler tzn. hardwarově lze přímo v donglu provádět up/down scaling obrazu a framerate. Lze tak vytáhnout libovolný formát obrazu dle potřeby, což ulehčí procesoru.

Magewell HDMI – USB 3.0 capture card

Ingest obrazu z počítače na stage

Jednoduchá odpověd NewTek NDI FTW! Firma NewTek je známá především svými streamovacími/nahrávacími boxy TriCaster vyvinula software nazvaný Network Device Interface (NDI), který umožňuje posílat obraz po IP síti s téměř nulovou latencí a to včetně zvuku! Jde o ekvivalent SDI rozhraní po ethernetu (nebo čímkoliv přes co jde posílat IP provoz). NDI existuje jako plugin do OBS. Tak že na počítač na stagi jsem nainstaloval OBS + NDI plugin a NDI Redistributable package. Stačí pak udělat v OBS jednu scénu s zdrojem desktopu a povolit NDI output. Na streamovacím počítači pak do scény navolit NDI Source a daný počítač se za chvilku objeví ve výběru NDI zdroje.

Výstup NDI z OBS

Na NDI zdroji lze tam pak ještě zapnout HW (GPU) akceleraci a taky pozor na firewally, mohou to blokovat! Ve chvíli, kdy zapnete NDI output na stanici odkud chcete brát obraz tak se OBS chová jako když streamujete. Je tedy vhodné dopředu nastavit rozlišení a framerate ve kterém chcete NDI stream brát, by default má OBS nastavený downsampling na rozlišení 1280×720 při 30 FPS. V provozu pokud přenášíte čistý desktop v rozlišení 1920×1080 při 30 FPS si vezme na zdrojovém PC zhruba 10-12% CPU. Testováno na starším procesoru Core I7 4600U (mobilní low power CPU z roku 2014). Trafficem to bere zhruba 250 Mbps tzn. gigabit síť je nutností. Pokud rozlišení stáhnete na 720p30 tak jste zhruba na 90-100 Mbps tak, vejdete se tedy i do rychlosti Fast Ethernetu. Všimnul jsem si, že při full screen přehrávání videa rychlost NDI streamu nebyla konstantní jako když tam byl holý desktop a poměrně značně se měnila v rozmezí 50-120 Mbps. Je tedy zřejmé, že v NDI je nějaká forma redukce generovaného provozu pokud na zachytávané obrazovce je full screen video.

Zvuk

Grabbování audia bylo poměrně jednoduché. Použil jsem pro to svůj domácí mixpult Mackie 802VLZ4 a zvukovou kartu Steinberg UR22 MK2. Do prvního mono kanálu byl připojený mikrofon co jsem měl u sebe na stole, pokud bych chtěl něco tlachat do streamu ale ve výsledku jsem ho použil jen jednou. V kanálu číslo 2 byl připojený zvuk z hlavního mixpultu od zvukářů (zdravim Vojtu a D’Artagnana). Jediné co bylo potřeba poštelovat bylo spoždění videa oproti audiu a to tak, že stačilo zvuk opozdit o 200 ms.

Zvuková karta Steinberg UR22 MK2
Audio mixpult Mackie 802VLZ4

Průběh streamu

Pokud vím tam nikdo (ani v chatu) si po celou dobu streamu nestěžoval na kvalitu obrazu, jedniné na co se objevila reklamace byl slabý zvuk a to sem rychle fixnul (zdravím Astonova … co chodí vždycky pozdě 😀 ). Občas se stávalo, že se stream na chvíli drbnul a to bylo především ne úplně stabilním připojením, nicméně musím říct že cca 98% veškerého streamovacího času to jelo jak mělo.

Co příště?

Co bude určitě potřeba vyměnit je streamovací počítač, je to PC které jsem tak nějak splácal z komponent co sem měl doma, je to spíše herní PC. Začnu výměnou grafiky za Quadro P600, která umí daleko více profilů u kodeků H264 něž stařičká GTX660. Navíc k tomu umí i HEVC encoder s schopností 4K YUV 4:4:4 a rozlišení až 8K pravděpodobně ale 4:2:0, na webu to není nějak specifikováno. Také tahle karta zvládne paralelně encodovat 2 streamy zároveň. Což otevírá možnost mít 2 separátní nastavení pro lokální záznam v plné kvalitě a ořezaný profil pro stream. Obojí se pak děje na grafice a nemusí se tím zatěžovat CPU.

Co bude v budoucnu i změnit je samotný počítač, výhledově mám vyhlídnutou platformu Threadripper od AMD. Oproti Intelímu HEDT (socket 2066, chipset X299) má TR (socket TR4, X399) velký počet PCI-Express linek. Otevírá to možnost do stanice zapojit více capture karet do PCI-E, které umí 4K rozlišení. Tyto karty většinou požadují aspoň 4x PCI-E 2.0 linky pro 2160p30 a 8x PCI-E 2.0 linek pokud jde o 2160p60. Blbé je že v běžném desktopu máte 16x sloty maxmálně 2 (někdy 3) a mezi nimi jsou sdílené všechny PCI-E linky, které jsou vyvedené z CPU a těch je pouze 16. Efektivně tam tak tedy můžete dát jen grafiku a jednu capture kartu, mezi ně se pak rozdělí PCI-E linky 8+8. V případě 3 slotů to většinou bývá 8+4+4.
HEDT platoforma od Intelu má PCI-E linek 44 v závislosti na procesoru který je v socketu. Jak je u Intelu zvykem tak plný počet linek je pouze u těch dražších procesorů.

U AMD TR platformy je z CPU vyvedeno všech 64 Express linek. Do slotů je pak zapojena většina PCI-E linek což znamená, že na desce jsou minimálně dva PCI-E 16x sloty s plným počtem a dva fyzické 16x sloty s osmi linkami. Lze tam tak bez problému osadit grafiku a např. dvě 6/12G SDI karty každá pro jednu kameru.

Štítky , , , .Záložka pro permanentní odkaz.

Jedna reakce na Streaming setup z 7. Zimní Karaoke party

  1. Pingback:Streaming Czequestrie 2019 – fangfactory.net

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *