Portál AbcLinuxu, 27. dubna 2024 05:13

Digitalizace jinak: DLNA

8. 7. 2009 | Václav Dvorský
Články - Digitalizace jinak: DLNA  

V Praze došlo k úplnému vypnutí pozemního analogového televizního vysílání. Ze všech stran nás upozorňují na nutnost pořízení DVB-T set-top boxu, alternativou je pak kabelová TV, satelit nebo TV přes internet. Dnes jsem si připravil povídání o další alternativě digitalizace, při které samozřejmě využijeme Linux: DLNA (Digital Living Network Alliance).

Úvod

DVB-T set-top box je asi nejjednodušší a nejlevnější způsob digitalizace. Technicky založený člověk se ovšem jen tak s ledasčím nespokojí, a tak vybírá a porovnává. Mělo by to určitě umět nahrávat, mělo by to mít možnost nahraný film zbavit reklam a vykopírovat ho minimálně přes USB, ještě lépe po síti. Bohužel tyto požadavky ne úplně každý set-top box splňuje, ale hlavně se tím přesouváme do poměrně dražší kategorie.

Máme-li doma připojení k internetu, zdálo by se logické zapojit do hry počítač a přepnout se na TV přes internet. Naše TV stanice však vysílají v uzavřených formátech, operátoři jsou zase mazaní a internetovou TV si nechají pěkně připlatit. Za satelit se platí také.

Zdá se tedy, že se nám ta digitalizace prodraží. Nebo je tu také možnost zůstat u klasiky, dál připojovat notebook k televizi a hrát si se spoustou kabelů. Ale třeba to jde i jinak. Pojďme si vytvořit vlastní digitální televizní vysílač, bez reklam a zcela podle našich představ.

Mějme tedy v pracovně jeden počítač s Linuxem a jednu PlayStation 3 v obýváku připojenou k stávající třeba i klasické TV. PlayStation 3 zde uvádím jako celkem dobrý příklad, lze použít i jiné zařízení certifikované jako DLNA (Digital Living Network Alliance) – v poslední době třeba i některé TV. Počítač s Linuxem nám poslouží jako server a může také plnit úlohu úložiště filmů. Problém je, jak dostat video z pracovny na obrazovku do obýváku. A na to existuje jednoduchá odpověď: DLNA.

DLNA

DLNA umožňuje streamování video obsahu po lokální síti. Pro transport médií se používá HTTP 1.0/1.1. Nad tím jsou protokoly UPnP AV, které rozpoznávají zařízení, řídí pohyb obsahu, jeho výběr a streaming. Funguje to zjednodušeně tak, že Linux nám dělá filmovou knihovnu, ze které si vybíráme dálkovým ovladačem z křesla v obýváku. V okamžiku, kdy si vybereme stisknutím tlačítka play, server dostane pokyn a začne streamovat. Video se nekopíruje, ale na vyžádání streamuje.

DLNA má ve své specifikaci ještě jednu zajímavost. Definuje pro různá DLNA kompatibilní zařízení společné formáty pro případ, kdy se nedohodnou. Mějme tedy na našem Linuxu video MPEG-4/DivX. PlayStation 3 (PS3) tyto soubory přehrávat umí, a tak se video může streamovat tak, jak je. To je ideální případ, protože zátěž pro Linux je minimální. Může ale nastat případ, kdy máme video ve formátu, který PS3 neumí. Řekněme třeba H.264 v kontejneru Matroska. Pak využijeme transkódování, tedy on-line přepočet videa do předem daného formátu MPEG-2, jenž musí všechna DLNA kompatibilní zařízení podporovat.

uShare a fuppes

V loňském roce jsem otestoval několik DLNA serverů pro Linux. Úplně první byl jednoduchý program uShare (UPnP A/V & DLNA Media Server) ve verzi 1.1a. Je velmi rychlý, podporuje DivX, některé soubory však nerozpozná a určitě bude potřebovat ještě nějaký čas vývoje. Neumí video transkódovat.

Další pěkný prográmek je fuppes (Free UPnP Entertainment Service) v0.7.1. Má konfigurační soubor s opravdu bohatými možnostmi nastavení, nabízí i konfiguraci přes webové rozhraní. Přehraje téměř vše, bohužel ale není 100% stabilní a občas padá. Nastavení konfiguračního souboru mi nepřišlo právě triviální. Oba tyto servery potřebují pro svůj běh práva roota.

U obou těchto prográmků jsem nenašel způsob, jak do videa vložit titulky on-line. Používal jsem tedy jednoduchý script pro off-line přepočet (může se hodit):

#!/bin/bash
for i in *avi; do
titulky=`ls "${i%avi}"*[Sst]*`
if [[ -a $titulky ]] ; then
mencoder "$i" -o "$1/${i}" -sub "$titulky" -subpos 100 \
  -subfont-text-scale 4 -oac copy -ovc lavc \
  -lavcopts vcodec=mpeg4:vhq:vbitrate=992 -subcp utf8 -ffourcc DIVX
fi
done

PS3 Media Server

Na konci roku 2008 byl oficiálně zahájen vývoj zcela nového DLNA serveru: PS3 Media Server. Tento je kompletně napsaný v Javě. Tím je dána jeho jasná nevýhoda, a tou je relativně pomalejší start. Všechno ostatní už vypadá pěkně. Především je to prográmek poměrně jednoduchý a funkční. Nemusí se instalovat, stačí jej rozbalit třeba do adresáře běžného uživatele a z něj lze pod běžným uživatelem i rovnou spustit. Na rozdíl od předchozích hledá na síti hned po spuštění PS3. Konfigurace se dělá přes grafické rozhraní a je docela jednoduchá. Pro transkódování videa v reálném čase používá osvědčené programy mencoder a ffmpeg. Během transkódování mu nedělá problém přidat do filmu titulky, které mohou být třeba v UTF8 nebo klidně i CP1250. Menu PS3 rozšiřuje o vlastní menu, kterým je možné některé konfigurační změny provádět přímo z křesla obýváku. Takto je možné jej vzdáleně i restartovat.

dlna ps3 ps3 media server

Z pohledu architektury a bezpečnosti lze program v Javě považovat za výhodu; potenciální útočník by v případě závažné chyby mohl prorazit do „middleware“ vrstvy Java a to ještě jen s právy běžného uživatele. Navíc PS3 Media Server nabízí i jednoduchý IP filter.

Už nemusíme filmy vypalovat nebo připojovat USB disk k PS3. Elegantně jsme vyřešili i otravný notebook a hromadu kabelů v obýváku. Zdá se, že jsme dosáhli maximálního pohodlí. Může to být ještě lepší?

Může.

Internetové úložiště

Celé toto řešení se zdá celkem pohodlné, ale přináší nám potřebu velké diskové kapacity pro filmovou knihovnu. Řekněme, že máme přístup na nějaký třeba FTP server kdesi na internetu, který bude naší legální videopůjčovnou. V Gentoo Linuxu existuje ebuild sshfs-fuse. Takže nainstalujeme a spustíme:

# modprobe fuse
# sshfs -o allow_other user@example.com:/stuff /media/server

Myslím, že je zřejmé, čeho jsme právě dosáhli. Pojďme se ještě podívat na výkon. Já osobně mám počítač s dnes už starším procesorem Core2Duo na 2 GHz. Měl jsem trochu obavy, že nebude stíhat přepočítávat poměrně veliké objemy dat HD filmů. Při transkódování jsou obě jádra zatížená docela dost, ale v obýváku u televize to poznat není. Zatížení procesoru mi nevadí, počítač je od toho, aby počítal.

Pokud jde o propustnost linky na internet, zvládnete-li video stáhnout rychleji než je jeho vlastní délka, pak bude stačit. Osobně jsem na cukání ve filmu narazil právě z důvodu nedostatečné kapacity internetové přípojky (PS3 přitom hlásila datový tok 116 Mb/s).

Jediným problémem programu PS3 Media Server je rychlé přetáčení vpřed a vzad. To oba dříve uvedené zvládají dobře. Autor o tom ví, a tak lze očekávat zlepšení.

Na konci dubna se mi mohlo stát, že bych se ponořil do digitální televizní tmy. Mediální kampaň nám nabízí předem vymyšlené cesty k digitalizaci, možná ale už přišel ten správný čas zvolit si jinou cestu a začít si vybírat vlastní obsah. Třeba ještě zvážím možnost DVB-T karty, ale i tak už z digitální tmy obavy nemám.

A co vy?

Související články

Na co se často ptáme: MPlayer
Přehrávání DVD pod Linuxem
Ripování DVD
Jak vytvořit vlastní DVD pod Linuxem
Televizní karta s dálkovým ovládáním
TVtime - tak trochu jiná televize
Internetová rádia
Linux, Blu-ray a HD video vůbec

Odkazy a zdroje

Wikipedia: Digital Living Network Alliance
PS3 Media Server
Free UPnP Entertainment Service
uShare

Další články z této rubriky

Linuxové foto novinky: nejen darktable 2.2 a Rawtherapee 5
Linuxové foto novinky: GIMP konečně prolomil 8bit mez
DLNA v praxi: Android
Technologie DLNA na Linuxu v praxi – PS3 Media Server
Technologie DLNA na Linuxu v praxi – 1

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.