Vánoce jsou za námi a jistě se v některých rodinách pod stromečkem objevila chytrá televize. V takovém případě člověka napadne, jak zpřístupnit širokou multimediální sbírku z počítače na nové televizi. V tomto článku si ukážeme, jak toho dosáhnout relativně nenáročnou formou pomocí dvou programů, jednoho open-source a druhého uzavřeného.
Pokročilejší multimediální centra a televize dokáží pracovat se vzdáleným obsahem i přes běžné protokoly, jako jsou FTP, NFS nebo Samba. V tomto případě s obsahem pracujete na úrovni souborů. Nicméně to není zaprvé úplně pohodlný způsob a zadruhé nejrozšířenější televizní systémy tento způsob nepodporují. V tomto okamžiku přichází na řadu DLNA, což je zkratka Digital Living Network Alliance. Tato aliance má za cíl vytvářet průmyslový standard, který se stará o bezproblémové sdílení obsahu mezi zařízeními v domácí síti. K tomu využívá protokol UPnP (Universal Plug and Play). Po světě už je podle DLNA přes 18 tisíc certifikovaných zařízení a software, který může fungovat jako DLNA server a tedy sdílet multimediální obsah počítače dalším zařízením v síti, naleznete i ve Fedoře. Pojďme se podívat na první možnost.
MiniDLNA
Poznámka: MiniDLNA změnil název na ReadyMedia. V tomto článku se budu ale i nadále držet názvu MiniDLNA, protože se tak i nadále jmenuje v repozitářích Fedory a pod tímto názvem ho naleznete i všude na internetu.
Jedná se o jednoduchý a nenáročný DLNA server, který je open-source, a naleznete ho přímo v repozitářích Fedory. Nainstalovat ho lze jednoduše příkazem:
sudo yum -y install minidlna
Server se nastavuje editací konfiguračního souboru /etc/minidlna.conf. V něm je sice celá řada nastavení, ale k základnímu běhu potřebujete jen nastavit adresář, kde se média nacházejí (např. media_dir=/home/pepa/Multimedia). Je možné také nastavit různé adresáře pro různé druhy médií (videa, hudba, fotky). Dále se ještě hodí nastavit si nějaký rozumný název serveru, pod kterým se bude hlásit v TV (např. friendly_name=Můj domáci DLNA server). Editace konfiguračního souboru je jednoduchá. Všechny volby jsou předvyplněné a dobře okomentované. Často je stačí pouze odkomentovat.
Dalším krokem je nastavení firewallu tak, aby komunikaci mezi TV a DLNA serverem umožňoval. Často se člověk může v návodech dočíst, abyste firewall vypnuli úplně. V domácí síti, která je zpravidla už chráněná několika firewally, to asi nehraje takovou roli, ale rozhodně správnějším řešením je firewall nevypínat a jen povolit porty, které potřebujeme. Těmi jsou v tomto případě TCP 8200 a UDP 1900. Předpokládáme-li, že používáte v domáci síti zónu “home”, nastavíte je těmito příkazy:
sudo firewall-cmd --zone=home –add-port=8200/tcp --permanent sudo firewall-cmd --zone=home –add-port=1900/udp --permanent
Tím máte nastavený firewall a posledním krokem je server nastartovat, což provedete příkazem:
sudo systemctl start minidlna
Následujícím příkazem pak zajistíte, aby server startoval při každém spuštění počítače:
sudo systemctl enable minidlna
Jak jste se mohli přesvědčit, zprovoznění MiniDLNA je otázka chvilky. Jedná se také o opravdu malý server s malým zatížením systému. V mém případě zabíral v paměti po spuštění nějakých 14 MB. Tím ovšem výhody končí. MiniDLNA má také jednu velkou nevýhodu pro sdílení obsahu na TV. Neumožňuje totiž převádět multimediální soubory do kodeků, kterým TV rozumí. Ty jsou totiž v tomto směru docela hloupé a kvůli hardwarové optimalizaci podporují jen vybranou sadu kodeků. Pokud tedy máte hudební sbírku například v OGG Vorbis nebo FLAC, můžete na přehrávání ve většině televizí zapomenout, pokud tedy nemáte DLNA server, který ty soubory dokáže převést pomocí kodeku, kterému TV rozumí. Z tohoto důvodu se v další části zaměřím na Serviio.
Serviio
Serviio je relativně mladý projekt založený Čechem Petrem Nejedlým. Jako většina ostatních pokročilejších DLNA serverů je napsaný v Javě a na rozdíl od MiniDLNA není open-source, ale pouze freeware, který má i verzi Pro s několika přidanými funkcemi. Jelikož Serviio není otevřený software, nenajdeme ho v repozitářích Fedory. Z tohoto důvodu vyžaduje instalace trochu víc než jen instalaci balíčku:
Nejdříve musíte nainstalovat Javu:
sudo yum install java-1.7.0-openjdk
A potom také ffmpeg z repozitáře RPM Fusion:
sudo yum install ffmpeg
Instalace ffmpeg je dost zásadní věc, protože bez ní vám Serviio nebude prakticky fungovat. Aby mohl pořádně zindexovat multimediální soubory, vytvořit náhledy a potom to vše poskytnout TV, musí mít k dispozici kodeky. Většina programů ve Fedoře už přešla z ffmpeg na libav. Nicméně libav vám nepomůže, Serviio se ptá přímo po ffmpeg. Já jsem dlouho přemýšlel nad tím, proč se mi v TV nezobrazuje žádný obsah, když to vypadá, že Serviio v pořádku běží a je správně nastavené, a až z logů jsem se dočetl, že mu chybí ffmpeg.
Tím bychom měli vyřešené závislosti a nyní se můžeme pustit do samotné instalace:
wget http://download.serviio.org/releases/serviio-1.4-linux.tar.gz (stažení) sudo tar -C /opt -zxvf serviio-1.4-linux.tar.gz (rozbalení) sudo mv /opt/serviio-1.4 /opt/serviio (nakopírování do složky /opt/serviio)
V dalším kroku si vytvoříme uživatele jménem serviio a dáme mu práva přístupu k adresáři /opt/serviio:
sudo useradd -d /opt/serviio -r serviio sudo chown -R serviio:serviio /opt/serviio
Nyní musíme vytvořit unit soubor, podle kterého se bude služba spouštět. Soubor s následujícím obsahem uložte jako /lib/systemd/system/serviio.service:
[Unit] Description=Start the serviio DLNA server in headless mode After=local-fs.target network.target [Service] Type=simple User=serviio ExecStart=/opt/serviio/bin/serviio.sh ExecStop=/opt/serviio/bin/serviio.sh -stop Restart=on-abort [Install] WantedBy=multi-user.target
Po uložení souboru ještě proveďte následující příkaz, abyste se ujistili, že změny v nastavení systemd se provedou okamžitě:
systemctl --system daemon-reload
A nyní už vám nic nebrání v tom Serviio spustit:
sudo systemctl start serviio.service systemctl enable serviio.service (zajistí, aby se Serviio spouštělo po každém startu počítače)
(návod pro instalaci čerpá z wiki Serviio).
Serviio mi v zóně home fungovalo bez dodatečných nastavení. Máte-li s tím problémy nebo používáte-li jinou zónu, povolte porty TCP 8895 a UDP 1900.
Teď už nám zbývá jen Serviio nastavit. Dobrou zprávou je, že Serviio má vlastní grafickou konzoli pro nastavení, takže to je přehledné a jednoduché. Stačí provést následující příkaz:
/opt/serviio/bin/serviio-console.sh
Na kartě Status můžete vidět, jestli server běží, nebo ne. Níže je potom seznam DLNA klientů, které Serviio dokázalo v síti detekovat. Tento seznam je důležitý v případě, že chcete multimédia, která nejsou kompatibilní se zařízením, převést do kodeku, kterému zařízení rozumí. Podle zvoleného profilu se totiž daný kodek vybere.
Na kartě Library můžete nastavit adresáře, kde se mají jednotlivé druhy multimédií vyhledávat. Myslete na to, že musíte dát DLNA serveru nějaký čas, než vaši sbírku zindexuje. Kompletní obsah sbírky tak v TV nenajdete hned. Pod tlačítkem Show Status můžete vidět, jak daleko se indexace dostala. Ukázkové nastavení na této kartě můžete vidět na screenshotu:
Na kartě Delivery můžete nastavit právě to převádění do kodeků, kterým TV rozumí. Ve výchozím stavu se převedené soubory dočasně ukládají do /tmp. Důležité je také nastavení v podkartě Subtitles, kde budete chtít pravděpodobně změnit kódování titulků z UTF-8 na WIN-1250, protože tuto znakovou sadu stále používá drtivá většina českých titulků. Na kartě Metadata můžete nastavit, z jakých zdrojů a v jakém jazyce se mají získávat metadata k multimédiím. Na kartě Presentation můžete zvolit, jak má multimediální sbírka zobrazovat v TV (jde především o způsob třídění). Na kartě Console Settings si můžete nastavit české rozhraní pro konzoli Serviio, pokud vám dělá nastavování výše zmíněných věcí v angličtině problémy.
Tím je zprovoznění DLNA serveru Serviio hotovo. Nyní jen stačí počkat, až se celá sbírka zindexuje, a můžete si ji začít užívat na televizi. Na 14 dní automaticky získáte Pro verzi, která má navíc funkce jako aplikaci do Androidu, streamování mimo lokální síť apod. Stojí 25 dolarů a je na vašem zvážení, jestli vám stojí za to. Vzhledem k tomu, že Serviio je napsáno v Javě, jeho nároky na operační paměť jsou výrazně vyšší než v případě MiniDLNA. V mém případě to je něco lehce přes 100 MB, což ale při velikostech dnešních pamětí není nic zničujícího.
Serviio samozřejmě není jediným pokročilým DLNA serverem, který na Linuxu a tedy i Fedoře běží. Hodně lidem se osvědčil např. PS3 Media Server, který je dokonce pod GPL. Jaké jsou vaše zkušenosti s provozem DLNA serveru na Fedoře?
14. 1. 2014 at 11:11
na f17 mi bezi ps3 media server, zatial to bolo jedine riesenie ktore malo aj ako tak funkcny transcoding. telka je size 6-kovy samsung ale aj tak je velmi hlupa, takze stale odmieta upscalovat dodavany stream, a ps3ms zase odmieta poriadne upscalovat posielany stream.
skusim este tento serviio server ci to bude lepsie ako ps3ms.
14. 1. 2014 at 15:19
Super,
hned večer vyzkouším s naší TV Philips.
Díky!
Mitra
16. 1. 2014 at 17:02
Super, pouzivam doma minidlna a funguje bezvadne .. ale vyzkousim i serviio
28. 12. 2016 at 22:01
Nestala se Vam nekomu tato chyba?
/opt/serviio/bin/serviio-console.sh
OpenJDK 64-Bit Server VM warning: Using the ParNew young collector with the Serial old collector is deprecated and will likely be removed in a future release
Error parsing gtk-icon-sizes string: “
console se sice spusti, ale kdyz tam chci neco nastavit pise to chybu 500.
Diky
22. 11. 2020 at 10:21
no jeste by to chtelo jak spravne vytvorit ten soubor pro konfiguraci v prikazovem radku pro zacatecnika napsat jen „Nyní musíme vytvořit unit soubor, podle kterého se bude služba spouštět. Soubor s následujícím obsahem uložte jako /lib/systemd/system/serviio.service:“ docela nic moc informace 🙂
vetsina zacatecniku si myslim skonci prave na tomto kroku nebudou vedet jak vytvorit soubor jinak super navod.
22. 11. 2020 at 17:19
Doporučuju používat ten miniDLNA (pokud to máte na serveru bez GUI), nebo DLNA server, který je přímo v GNOME a kde to lze nastavit na pár kliknutí. Obě tyto volby už jsou připravené a nemusíte si tam žádný unit file vytvářet. Serviio navíc nabízí jenom to překódování za běhu, což ale dnes není tak potřeba, protože většina obsahu je v H.264, které dnes zvládnou všechny televize. A třeba překódování z H.265 do H.264 je tak náročná operace, že byste musel mít fakt výkonnou mašinu, aby to stíhala v reálném čase.