Poslední dobou jsem se zabýval DLNA serverem pro Ubuntu Intrepid Ibex a Lucid Lynx. Nabízím zde shrnutí všech svých zkušeností jako malý návod jak na to, pro ty co o to stojí. A protože všude používám pouze 64-bitové systémy, tak zde je ukázka pouze pro tuto alternativu co se týče vybavení. Pokud jde o 32-bitové systémy nechť to poslouží jako vodítko.
Problém první: Jaký použít software.
Dostupných je více. Vyzkoušel jsem Fuppes, uShare, MediaTomb a PS3 Media Server. Ihned po prvotních zkouškách jsem pochopil, že alespoň pro mne jednoznačně vyhrál PS3 Media Server. Ty ostatní jsem vyhodnotil jako zanedbané projekty. U PS3 je vidět bouřlivý vývoj, maximální podpora na domovském fóru a mnoho praktických zkušeností userů. Software považuji za nejdopracovanější i když ještě není dokončen. Z aktivity na fóru je znát veliký zájem o pokračování ve vývoji. Rozhodl jsem se tedy používat PS3 Media Server.
Problém druhý: FullHD verzus dostupný výkon serveru.
Ověřil jsem totiž, že i pokud máme k dispozici relativně silné srdce systému, nemusí to stačit na FullHD v perfektní kvalitě zobrazené na TV. Na bázi Intrepidu mi běží server s Intelem E7300 což je dvoujádro na 2,7GHz. Přesto to se standartní výbavou repozitářů nestačilo na FullHD. Nestačilo to ani se standartní výbavou Lucida na mém pracovním stroji v konfiguraci AMD viz níže. I když mám TV připojen pomocí LAN 100mbit. Samozřejmě, že šlo mi hlavně o zachování maximální možné kvality v souladu s možnostmi sítě 100mbit. Ani při značně zhoršených parametrech encódování jsem nedosáhl plynulé projekce bez koktání či občasného přerušování. Zkrátka standartní repozitářová výbava neumožňuje využití více jader CPU což při kvalitním FullHD je nezbytnou nutností.
Bylo nutno najít cestu, jak zapojit zbylá jádra CPU ať už je jich kolik možno. A tak jsem musel nastoupit cestu výroby vlastních balíčků audio/video playerů a encoderů se zapnutou podporou multivláknového zpracování streamů. Výsledkem je tento malý projekt, který vám nabízím k použití, anebo jako vodítko "kudy dudy paní Kelišová" vede cesta k úspěchu.
Všechny potřebné balíčky jsem zhromáždil na svém webu
http://www.gfly.cz/ubuntu-lucid/ a jak již patrno jedná se o vybavení pro Lucid Lynx 64-bit.
FFMpeg je v poslední verzi (zdrojáky jsou ffmpeg-mt z git repozitáře) jako soubor balíčků nově vyrobených včetně dalších knihoven pro x264, Xavs a rtmp. Pozor, nejedná se o tzv. "extra" knihovny jako jsou dostupné v jiných repozitářích, ale jsou standartně pojmenované.
Mencoder a Mplayer je také ze zdroje git s podporou multithreading a závislý na ffmpeg. Mplayer nemá zabudovanou GUI neboť není nutná a to ani když jej používáte jako přehrávač, protože k němu máme v repozitářích jiné GUI, např. SMplayer či Gnome-player.
VLC player je v repozitáři Ubuntu ve staré nedoporučované verzi. Použil jsem poslední build ze stránek vývojářů VLC a pomohl jsem si převzatým debian/rules z PPA-VLC na lanchpadu, který jsem pouze přelomil, abych změnil závislosti z původních extra knihoven na mnou vyrobené knihovny normální jmenné konvence.
Pak jsem ještě přidal na web mediainfo v "původním znění" z PPA a mnou přelomený DeVeDe do posledního buildu zase kvůli závislostem. Tento nástroj používám velice často a považuji jej za užitečný.
No a pak ten nejdůležitější a tím jest vlastní PS3 Media Server jako archív, do kterého jsem přidal vlastní konfiguraci (PMS.conf) jako ověřenou zkušenost a pak konfiguráky rendererů Philips řady 7000 jako vyzkoušené a plně funkční.
Tak a nyní co s tím:
Nejdříve doporučuji vypořádat se s tzv. "-extra-" knihovnami. Je potřeba je (ty co souvisí s potřebným softwarem), byť třeba dočasně, odebrat včetně konfiguráků. Vono to sebou vezme i další, ale to nevadí, pak se to zpět přidá co bude potřeba. Tyto knihovny nepocházejí s domovského repozitáře Ubuntu, ale z připojených Medibuntu nebo PPA apod. Tedy odebrat FFMpeg, Mencoder, Mplayer a VLC, včetně jejich závislotí. Tento krok platí pro ty z vás, co tyto repozitáře mají připojené.
Pak bych doporučil jako nejlepší variantu, zřídit si lokální repozitář. Značně se tím zjednoduší instalace balíčků včetně závislostí.
Jak na to:
Perfektně popsáno zde
http://ubuntu.wz.cz/hlavni_stranky/navody_balicky.html#lokalni_balickyNutno stáhnout dpkg-dev pokud již nemáte.
Nejlépe ve své domovské složce vytvoříte repozitář, já to mám takto:
/home/user/LocalDebs/debs
Nyní se musí editovat zdrojový soubor repozitáře /etc/apt/sources.list
a přidat do něj řádek:
deb file:///home/user/LocalDebs ./debs
Nyní si z mého webu stáhněte jediný soubor a to archiv DownPMS, který rozbalte do nějaké složky u sebe doma. Vybalí se script downpms.sh no a spusťe terminál a nasměrujte se v něm do složky kde sídlí a spusťte jej:
./downpms.sh
Tímto stáhnete vše potřebné, tedy nejenom vlastní server, ale i programy a jejich závislosti. Všechny takto stažené balíčky *.deb přesuňte do složky /home/user/LocalDebs/debs
V terminálu si nastavte cd /home/user/LocalDebs a spusťte
sudo dpkg-scanpackages debs /dev/null | gzip > ./Packages.gz
(všimněte si, mám to jinak než popsáno na stránkách co jsem uvedl výše)
Pokud vše dopadne dobře a v terminálu uvidíte seznam balíčků v lokálním repozitáři tak je potřeba zaktualizovat zdroje:
sudo apt-get update
No a máte zahrnut lokální repozitář do zdrojů včetně jeho balíčků. Nyní už stačí vybrat a instalovat ffmpeg, mencoder, mplayer a vlc pomocí synapticu.
A nyní nám zbývá PS3MS. Já jej i na serveru provozuji jako aplikaci, nikoliv jako službu. Takže mám ve svém domově složku Aplikace kde mám vybalen archív co jste stáhli pomocí scriptu, pms-linux-1.20.412.tar.gz
Ve složce serveru je již přednastavena konfigurace, kterou mám ověřenou u sebe. Pak je tam soubor PMS.sh, který je spouštěčem a já jej na základě vlastních zkušeností upravil změnou posledního řádku, kde se nastavují parametry JAVA. Přidal jsem startovací velikost paměti, zvětšil jsem maximální paměť a zvětšil stacky a to vše kvůli tomu, abych měl kompletní přehled o celém sdílení pomocí TV. Ověřil jsem totiž, že pokud se nechají parametry nezměněné, tak zvládá pouze malé archívy. Na to příjdete ostatně určitě sami.
Pak jsem tam přidal ještě script PMServer, kde si upravte cestu editací tak, jak to máte u sebe, aby jste mohli spouštět server odkudkoli.
Pro další informace o problematice navštivte stránky PS3mediaserveru a fóra:
http://ps3mediaserver.blogspot.com/http://code.google.com/p/ps3mediaserver/http://ps3mediaserver.org/forum/Speciálně na fóru je mnoho velmi cenného.
Zkrátka řekl jsem si, že když už jsem si dal tu práci s tímto řešením DLNA serveru, tak ať ti co by měli zájem taky nemuseli absolvovat tu anabázi jako já. Je to dost komplexní problém a není snadno zvládnutelný.
Berte to prosím jako pouze jednu z možností, nikoho nenutím reorganizovat svůj systém kvůli mému řešení. To prosím mějte na paměti. Na mém webu jsou i další související knihovny pro další vývoj, pokud budete chtít, stáhněte si je zvlášť. Doufám, že jsem neudělal žádnou chybu, zkuste a uvidíte.
Ještě zbývá dodat co mám připojené jako další repozitáře s ohledem na závislosti, vůči kterým jsem to debianizoval:
Medibuntu: deb
http://packages.medibuntu.org/ lucid free nonfree
Medibuntu: deb-src
http://packages.medibuntu.org/ lucid free nonfree
Stable upstream releases of X.org components: deb
http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu lucid
Stable upstream releases of X.org components: deb-src
http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu lucid
Mplayer: deb
http://ppa.launchpad.net/rvm/mplayer/ubuntu lucid
Mplayer: deb-src
http://ppa.launchpad.net/rvm/mplayer/ubuntu lucid
MediaInfo: deb
http://ppa.launchpad.net/shiki/mediainfo/ubuntu lucid
MediaInfo: deb-src
http://ppa.launchpad.net/shiki/mediainfo/ubuntu lucid
Handbrake: deb
http://ppa.launchpad.net/stebbins/handbrake-snapshots/ubuntu lucid
Handbrake: deb-src
http://ppa.launchpad.net/stebbins/handbrake-snapshots/ubuntu lucid