19.02.2008 Jak streamovat video, aneb, na čem stojí youtube

Nedávno jsem psal o tom, že ČT spustila nový portál. Při této přiležitosti jsem si popíchnul do webmasterů a napsal jsem jim mail v tomto znění:

Předem bych chtěl pochválit Váš nový web www.ct24.cz, vypadá to profesionálně a je to určitě krok správným směrem. Dovolte mi ale prosím, abych vyjádřil nespokojenost s video formátem poskytovaných videoukázek. Osobně si myslím, že jako instituce veřejná by jste neměli podporovat jakoukoliv nesvobodnou technologii kterou Ms wmv bezpochyby je bez alternativy. Nehledě na to, že tato technologie je na některých systémech nepřehratelná a tím jste sami proti sobě. Existuji jiné, celosvětově i u nás používané formáty, jejichž použití je snadné a navíc zadarmo např. fotmát flash video (flv). Snad tato má připomínka bude ku prospěchu celého webu čt. Děkuji, s pozdravem Zdeněk Philipp

Asi za dva dny jsem obdržel vyjádření, které nebudu zveřejňovat, protože nemám svolení. V podstatě se jednalo to, že dodavatel streamového vysílání bohužel nepodporuje jiné formáty, a proto se jich v blízké budoucnosti nedočkáme.

Pojďme se tedy podívat, jaké jsou možnosti streamování videa ve formátu flv a co k tomu budeme potřebovat.
V první řadě google.com. Všechno ostatní už příjde jaksi samo. Po několika slepých cestách z nichž první byl FFserver, přišel na řadu Apache. Ten má sice velice pěkný modul pro streamování mp3 a dalších hudebních souborů, ale video neumí. Pak jsem začal uvažovat o napsání vlastního modulu, případně o úpravě modulu pro streamování mp3, přece to nemůže být tak složité. Nakonec jsem se ale znova vrátil ke googlu a po prozkoumání www.youtube.com jsem velice rychle došel tam odkud jsem vyšel. Bylo rozhodnuto, použiju to, co používam dnes a denně a co už takový modul má, server Lighttpd.

Server je ovšem až to úplně poslední co je potřeba. Nejdříve je třeba vyrobit samotný soubor flash video (flv), pak ho ještě upravit tak, aby byl streamovatelný.
K výrobě flv souboru lze použít několik nástrojů, zvolil jsem FFmpeg. Ten si můžeme nainstalovat, stáhnout a zkompilovat, to už záleží na vás. Na svém Debianu mi pro tuto chvíli stačilo:

apt-get install ffmpeg lighttpd

Takže server a encoder máme, vyrobíme flv soubor:

ffmpeg -i nejakevideo.avi -acodec mp3 -ar 44100 video.flv

FFmpeg má spoustu nastavení a dokáže konvertovat z čehokoliv na cokoliv. Soubor, který získáme, bude ještě potřeba upravit, a to tak, že je do něj potřeba přidat metadata pro streamování nezbytná. K úpravě jsem použil nástroj http://inlet-media.de/flvtool2, který je napsaný v Ruby.

apt-get install ruby
wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
tar -xvvzf flvtool2-1.0.6.tgz
cd flvtool2-1.0.6
ruby setup.rb config
ruby setup.rb setup
sudo ruby setup.rb install

Po stažení a instalaci se přidání metadat do flv souboru provádí takto:

flvtool2 -U video.flv

Streamovatelné video máme, teď budeme potřebovat server, který bude video streamovat. Jak již jsem psal, použijeme Lighttpd s modulem mod_flv_streaming. Server máme nainstalovaný z přechozích kroků, upravíme teda konfiguraci a video umístíme do adresáře server.document-root.

# v souboru /etc/lighttpd/lighttpd.conf

# pridame modul
server.modules = ( ..., "mod_flv_streaming", ... )

# a tento radek
flv-streaming.extensions = ( ".flv" )

# restartneme server
/etc/init.d/lighttpd restart

Co dál ... Celý vtip tkví v tom, že flash přehrávač musí posílat něco jako /video.flv?start=xxx, kde xxx je pozice v souboru v bytech. Server na tuto url reaguje tak, že vydá nový soubor s jiným content-length. Pro to potřebujeme ještě ten zprávný flash přehrávač, použil jsem FLVScrubber.swf. A to je vše.

V streamovaném přehrávání videa není žádný zádrhel, navíc, jak je vidět, veškeré technologie, které jsou výše použité jsou Open Source a tudíž úplně zadarmo.

Použité zdroje
http://inlet-media.de/flvtool2 http://jan.kneschke.de/projects/flv-streaming/ http://blog.lighttpd.net/articles/2006/03/09/flv-streaming-with-lighttpd http://trac.lighttpd.net/trac/wiki/Docs#Optionsformod_flv_streaming-flvstreamingmodule http://www.flashcomguru.com/index.cfm/2005/11/2/Streaming-flv-video-via-PHP-take-two http://topfstedt.de/weblog/?page_id=208

Komentáře (2)

© 2008. Weblog nejen o práci. www.Karotka.cz. Rss    Google Pagerank - www.karotka.czGoogle Pagerank S-Rank - www.karotka.czS-Rank