Pro zpravodajský portál dodáváme, kromě jiného, multimediální přehrávač videa – Neternity Flash Media Player. Pro nový IHNED.cz byla určena nová verze 1.7, kterou jsme začali připravovat několik měsíců před spuštěním IHNEDu. Ta obsahuje některé nové funkce, které se též díky spolupráci s Economií podařilo odladit. Největší problém však byl protokolem RTMP.
Nejprve pár technických informací
Neternity Flash Media Player (dále jen NFMP) je postaven na OSMF frameworku, který zajišťuje základní funkce přehrávání videa. OSMF je zkratka Open Source Media Framework – více zde.
NFMP však není jen obyčejnou implementací OSMF, ale jedná se o plně konfigurovatelný player.
Je to jediný tuzemský přehrávač, který má tak široké možnosti nastavení a konfigurace. Ostatně, manuál k němu už je dostatečně výmluvný – posuďte sami – manuál k NFMP. To se nevytahuju, to je prostě fakt. 🙂
Co umí Neternity Flash Media Player
Nejprve malé představení, co vše umí NFMP. Mno, umí toho opravdu hafo. Tak namátkou:
- přehrává videa flv, mp4, kodek H.264, audio mp3, obrázky jpg, gif, png a i swf
- je konfigurovatelný pomocí XML včetně podoby ovládací lišty
- umí pracovat s playlisty v XML nebo HTML
- přehrává videoreklamy a overlay reklamy – BB Video (k vidění na video.ihned.cz)
- podporuje různé stream servery, např. Adobe Flash Streaming Server, Wowza Media Server či open source Red5 server – protokoly HTTP, RTMP a RTMPT
- umí pracovat s alternativními streamy
- lze přepínat mezi různými kvalitami
- kromě jiného lze nastavit zasouvání ovládací lišty a její průhlednost (aplha), informace o délce reklamy (+ přeskočení) atd. atd. atd. Viz manuál.
Ladění pro IHNED.cz
Aktuálně je přehrávač ve verzi 1.7.6 (download) a základní nekomerční verze je zdarma. Při ladění přehrávače pro IHNED.cz však prošel player postupně od verze 1.7. B1 až k 1.7. B9 a pak od ostré verze 1.7.0 až po dnešní 1.7.6. Celkem bylo tedy 16 vývojových verzí.
V rámci bety se odstraňovaly chyby a ladil se, v rámci dalších subverzí se přidávali ještě nějaké další funkce.
O novinkách ve verzi 1.7.x píšeme v aktualitě přímo na webu playeru.
RTMP, bez RTMP?
Problém byl s RTMP a portem 1935. Vysvětlení pro laiky. Když zadáte do prohlížeče adresu www.neconeco.cz, komunikuje prohlížeč se serverem neconeco.cz na portu 80. Ten je určený pro webové stránky a je standardně ve všech normálních firmách povolený. Jenže u streamovaného videa přes protokol RTMP se komunikuje na portu 1950. A ten – surprise – je v některých firmách blokovaný. Důvody mi nejsou známé, buď kvůli bezpečnosti, nebo proto, aby zaměstnanci nelozili na video servery místo práce.
A největší problém byl v tom, že půlka Economie, hlavně redakce, která pracuje s videem, má port 1950 zakázaný. Před spuštěním se video testovalo, ale na jiné části sítě, kde 1935 je povolená.
Po spuštění nového IHNEDu se zjistilo, že jaksi video redakci nejde. Zbytku světa (až na nějaké výjimky jiných firem, kde je 1935 zakázaný též) jelo bez problémů.
A tím vlastně začalo poměrně zdlouhavé ladění a hledání řešení.
Player (OSMF framework) se sice umí přepínat z RTMP na portu 1935 na port RTMPT, který běží na portu 80, ale to z nějakého důvodu nefungovalo správně.
Musela se tedy do playeru přidat další funkce. Alternativní streamy. Ta funguje tak, že při nedostupnosti primárního streamu, se přepne player na alternativní. A do tohoto alternativního se nadefinoval stream na portu, které je přístupný.
Toto fungovalo celkem pěkně, ale nastal jiný problém. Kdo ví jaký? Ano, timeouty.
Přepnutí trvalo moc dlouho – 10 – 12 sec. Nejstrašnější na tom bylo to, že pokud byl zablokovaný port 1935 na počítači, přepnutí proběhlo téměř hned. Pokud byl port blokovaný na síťovém firewallu, přepnutí trvalo dlouho. A k tomu všemu to dělal jen Firefox.
Defaultní timeout media frameworku byl 10s. Po implementaci funkce, umožňující tento timeout změnit parametrem playeru, se ale situace nezlepšila. Dostali jsme se na cca 5-6 sec než došlo k přepnutí z primárního (nedostupného) streamu na alternativní, ale i to bylo moc.
Konečné řešení bylo nakonec docela jednoduché:
Na media serveru se povolil port 80 pro protokol RTMP.
Nemohu se stále zbavit dojmu, že kdyby se na serveru port povolil hned, mohli jsme si ušetřit pár desítek hodin bádání. 🙂 Na druhou stranu bychom nepřišli na některé chybky playeru a player by byl ochuzen o pár zajímavých funkcí.
Jak to tedy funguje na IHNEDu nyní?
Player si nativně zkouší "osahat" jak port 1935, tak port 80. Pokud je jeden z nich dostupný, začne z něj přehrávat video. Pokud není ani jeden dostupný, přepne se player na alterrnativní adresu videa (ta je definována v playlistu a player si jí načte při inicializaci), což je obyčejné nestreamované video přes HTTP.
Funguje to téměř dokonale, od této úpravy nebyl hlášený žádný problém s přehráváním videí.
A takto vypadá NFMP s IHNEDím designem