V předchozím článku jsem se zabýval sdílením videonahrávek na Internetu, dnes se podíváme na přenos živého videa. Zajímá mě scénář jednorázového přenosu, nesnažím se o scénáře typu hlídání domu videokamerou - pro tyto situace jsou mnohem robustnější jednoúčelová hardwarová zařízení, případně i software.

Pro přenos potřebujete v zásadě dvě komponenty.

První krok - převod videozáznamu do streamu

Zde Microsoft nabízí hned dva produkty. Prvním je Windows Media Encoder 9 Series (obrázek níže). Je zdarma, ale není už nejnovější - publikován 1.7.2003. Přesto poslouží dobře, kodeky jsou na solidní úrovni. Pokud ho chcete provozovat na Windows Vista, nezapomeňte nainstalovat fix na kompatibilitu. Více informací najdete např. na Wikipedii.

clip_image002

Jeho nejnovějším nástupcem je Expression Encoder 2 (Trial ke stažení, obrázek níže), plná verze stojí 199 USD a umí samozřejmě mnohem víc věcí (konverze formátů a různé další finty).

clip_image002[4]

Jak je vidět, uživatelské rozhaní za ty roky poněkud poskočilo, ale jinak oba nástroje fungují v zásadě stejně. Obraz a zvuk z nějakého zařízení převádějí na stream. Ten je buď tlačen (push) na Windows Media Server pomocí HTTP protokolu, anebo je vysílán za využití multicast paketů po lokální síti. Připojených klientů může být maximálně deset a očekávejte problémy, pokud jsou uživatelé na jiné lokální síti (nemluvě o tom, když jsou za firewallem). Multicast je sice teoreticky možný i po internetu, ale prakticky je to téměř vyloučeno.

Druhý krok - distribuce streamu uživatelům

Na Internetu může být více uživatelů než 10. Také se typicky používá unicast, tj. server posílá každému klientovi "jeho" stream. Což jsou dva důvody, proč vám nestačí Encoder a potřebujete Windows Media Services, které jsou schopné unicast stream vysílat velkému množství klientů.

Buď můžete použít metodu pull, kdy si Windows Media Services přebírají od Encoderu stream - připojují se k němu stejně jako "obyčejní" klienti a obdržená data posílají dál (na serveru zadáte http://adresa_klienta:port_encoderu). Druhou možností je použít push připojení - na serveru zadáte push:* a v Encoderu musíte zadat http://jmeno_wms_serveru/jmeno_publishing_pointu. Z hlediska koncového diváka je to úplně jedno. Push uspořádání má drobnou výhodu v tom, že na WMS nemusíte záznam pouštět - Encoder si server řídí vlastně sám. Pull má zase tu výhodu, že s jeho pomocí snadno vytvoříte farmu serverů. Volba bude ale spíše záviset na tom, kde je jaký firewall a kterým směrem lze přes něj posílat data. Přenos ve WMS pak vypadá následovně (nuda, co?):

image