V úvodu návodu vás raději upozorním na několik skutečností:
- GUI programu je samozřejmě vhodné pro přehrávání a lze jej použít i pro základní streamování,
- ani ve verzi 2.0.8 vám GUI nikterak nedopomůže k pokročilému streamování (snad další verze), jakým je například provoz DVB na síti – pokročilé streamy ovládnete rychle a pohodlně pomocí základních textových editorů (gedit, kwrite) a příkazového řádku,
- vzdálené ovládání VLC je sice možné přes web a telnet , ale tyto funkce jsou možnostmi omezené a je lepší použít externí aplikace.
Neodradil-li jsem vás úvodem o nedokonalosti VLC, získáte tímto návodem povědomost jednoduchého ovládání streamů v domácí síti. Uvedeným způsobem streamuji DVB-T v domácích podmínkách necelý rok téměř bez problémů.
Předpoklady pro tento návod:
- fungující domácí síť – nezáleží na tom, zda je použito aktivního prvku (router, switch), nebo se jedná o ad-hoc propojení mezi počítači,
- znalost hesla uživatele a IP adresy počítače (serveru), ze kterého VLC vysílá,
- zprovozněný DVB-T tuner – možnost, jak zprovoznit tuner, naleznete zde,
- nainstalované aplikace na serveru (klidně i počítač v pracovně) – VLC, w-scan, OpenSSH, screen; na klientech – VLC, PuTTY.
Přehrávání DVB-T obsahu (lokálně)
VLC nedokáže automaticky prohledat frekvence tuneru a naladit TV/rádio stanice. Je potřeba mu k frekvencím dopomoci, například použitím utilitky w-scan, nebo ručním zadáním. Z tohoto plynou v podstatě dvě možnosti sledování DVB-T obsahu.
Nyní však otevřete příkazový řádek a zadejte:
w_scan -L > dvb-t.xspf
Získáte přehledný seznam skladeb pro aplikaci, jehož obsahem jsou všechny nalezené TV/rádio stanice. Načtením tohoto seznamu (Média>Otevřít soubor>dvb-t.xspf ) máte možnost sledovat jednotlivé programy. EPG sledovaného programu naleznete pod volbou Nástroje>Průvodce programem.
Seznam skladeb s názvy jednotlivých stanic je velmi obtížné vytvořit jiným způsobem, natož stvořit jej ve VLC samotném. Provoz tohoto seznamu skladeb skrývá drobný neduh. Chcete-li mít celkový přehled o vysílaných pořadech pomocí EPG, je nutné zhlédnout stanice, o jejichž pořady máte zájem (není nahrán celý multiplex). Informace z navštívených stanic se přidají do Průvodce programem.
Druhou možností sledování DVB obsahu je ruční zadání frekvence, které získáte z již vytvořeného seznamu skladeb. Postačí kliknout pravým tlačítkem myši na názvu stanice a zvolit Informace. V dolní části okna naleznete řádek Umístění, na jehož začátku (je skrytý, neboť je zde mnoho parametrů) naleznete frekvenci multiplexu (např. dvb-t://frequency=570000000). Tato podoba je shodná se zadáváním do příkazového řádku (hodnota v Hz), v GUI se ale frekvence zadávají v hodnotách kHz.
Z menu vyberte Média>Otevřít zachytávací zařízení. Následující obrázek vám pomůže s nastavením (jen frekvenci nahraďte zjištěnou hodnotou).
Tuner /dev/dvb/adaper0 – označuje první zapojený tuner (druhý bude adapter1 atd.).
Pokročilé možnosti – není nutné vyplňovat, VLC si tyto volby doplní automaticky.
Zobraz více možností – není potřeba upravovat, nastavuje se zde velikost vyrovnávací paměti a přidáním parametrů do spodního řádku je možné ovlivnit přístup k DVB obsahu.
Stiskem tlačítka Přehrát dojde k naladění celého multiplexu a zobrazení stanice, která má v tomto multiplexu nejnižší PID (identifikace programu). Nyní postup opakujte a zadejte další, vám dostupné frekvence. Po přehrání poslední zadané frekvence, bude váš Seznam skladeb podobný tomuto.
Již to není tak přehledný seznam, jako v prvním případě. Při pokročilém streamování nám však bude nápomocen, proto jej uložte jako „multiplex.xspf“ (Média>Uložit seznam skladeb). Při ukládání je vhodné zadávat název seznamu i s příponou (nespoléhejte na filtr formátů nad tlačítky Zrušit/Uložit). Další možné formáty pro seznamy skladeb jsou M3U, M3U8 a HTML.
Prohlížení jednotlivých stanic z tohoto seznamu skladeb je nyní možné pomocí menu Přehrávání>Program (nahrán je celý multiplex, nikoliv jednotlivá stanice z prvního seznamu). EPG je dostupné pro všechny stanice multiplexu.
Spuštění z příkazového řádku
Pomocí příkazového řádku je možné aplikaci ovládat jednoduše, ale hlavně s nastavením, kterého jen velmi těžko dosáhnete v ostatních rozhraních.
vlc dvb-t.xspf
Spustí v GUI seznam skladeb, který máte z aplikace w-scan.
cvlc dvb-t.xspf
Provede to samé, jen nebude spuštěno GUI (dojde k otevření okna s obsahem stanice s nejnižším PID).
vlc dvb-t://frequency=778000000:bandwidth=8
Načte celý multiplex na uvedené frekvenci a spustí přehrávaní.
Základy streamování DVB
VLC dokáže streamovat DVB obsah do sítě několika způsoby. Nám však v domácích podmínkách postačí http, neboť je s ním spjato nejméně problémů.
Pro zpřehlednění je vhodné použít příklad konfigurace domácí sítě:
- Domácí server, nebo například počítač v pracovně – odsud bude VLC vysílat do sítě. Má pevně nastavenou IP adresu (zde 10.0.0.25). Pokud chcete VLC na tomto stroji ovládat dálkově, potřebujete znát přihlašovací údaje pro účet, na kterém bude VLC provozováno, a nainstalované OpenSSH a screen.
- Dva notebooky a jeden tablet (počty jsou jen pro náš příklad sítě) – stroje pro sledování obsahu DVB streamu. Nainstalován VLC. IP adresy jsou přidělována pomocí DHCP. Pro vzdálené ovládání VLC na serveru doporučuji doinstalovat/stáhnout PuTTY (cca 400Kb).
- Wifi router – aktivní prvek sítě s IP adresou 10.0.0.138 (nepodstatné), který řídí komunikaci v domácí síti. Povolen DHCP server s rozsahem 10.0.0.1 – 10.0.0.32.
Otevřete si textový editor (např. gedit) a vložte do něj následující řádky.
vlc dvb-t://frequency=778000000:bandwidth=8:dvb-adapter=0 --ts-es-id-pid --programs=513,514,770,773,2050 --sout '#duplicate{dst=std{access=http,mux=ts,dst=:8080/1},select="program=513", {dst=std{access=http,mux=ts,dst=:8080/2},select="program=514", {dst=std{access=http,mux=ts,dst=:8080/3},select="program=770", {dst=std{access=http,mux=ts,dst=:8080/4},select="program=773", {dst=std{access=http,mux=ts,dst=:8080/5},select="program=2050"}' --ttl 3
Než soubor uložíte pod názvem „dvb778“ do svého domovského adresáře, poupravte tyto parametry (dosaďte skutečné hodnoty):
frequency=
--programs=xxx,xxx (PID = identifikace programu - tato čísla získáte v GUI volbou Nástroje>Informace o kodeku, ale většinou jsou pro vysílané stanice stejné na různých frekvencích)
"program=xxx"
Dále je vhodné pozměnit adresy streamu z dst=:8080/1 na dst=:8080/nova nebo dst=:8080/prima atd. Nebude tak docházet k chybám při streamování z více tunerů.
Malý rozbor příkazu neuškodí:
vlc dvb-t://frequency=778000000:bandwidth=8:dvb-adapter=0
- – spustí ve vlc tuner číslo 1 ( dvb-adapter=0 je první tuner v systému) na uvedené frekvenci
--ts-es-id-pid
- – parametr, který v dvb signálu hledá identifikaci programu (PID)
--programs=513,514,770,773,2050
- – parametr určující o jaké programy (PID) z přijímaného multiplexu máme zájem
--sout
- – parametr označující požadavek na vysílání streamu
#duplicate
- – určuje, jak bude s přijímaným vstupem zacházeno (duplicate se používá pro zařízení, z nichž se nemohou číst data vícekrát současně)
{dst=std{access=http,mux=ts,dst=:8080/1},select="program=513"
- – nastavení protokolu (access=http), formátu dat (mux=ts) a adresy (dst=:8080/1) pro stream programu s PID 513 (nova)
--ttl 3
- – určuje počet aktivních prvků sítě, které stream přežije (3 = stream přežije průchod přes dva routery, switche)
Možností, jak ovlivnit a šířit stream, je mnoho. Cílem tohoto návodu není obeznámit vás se všemi možnostmi nastavení streamování. Pro další informace se podívejte na stránky dokumentace aplikace VLC, nebo zkuste hledat u hodného strýčka jménem Google.
Po uložení souboru a ukončení VLC, máte-li jej spuštěný, si otevřete příkazový řádek a zadejte (bash je v mnoha distribucích jako výchozí shell – příkazový řádek):
bash dvb778
Spustí se vám VLC s přednastavenými hodnotami streamování DVB obsahu. Nelekejte se, pokud vám ve VLC nenaskočil obraz a zvuk, znamená to úspěšné zprovoznění streamu celého multiplexu.
V naší fiktivní síti nyní dojde k zobrazení stanice Nova Cinema, pokud na ostatních počítačích v síti zadáme ve VLC (Média>Otevřít síťový proud) adresu http://10.0.0.25:8080/2.
Vzdálené ovládání a pokročilé streamování
Vzdálené ovládání je ve VLC zatím v plenkách. Je zde sice přítomno webové rozhraní a telnet, ale obě varianty provoz nikterak neulehčují. Zatím stále platí, že pokud chcete občas změnit obsah DVB streamu, je nejvhodnější ukončit VLC a spustit jej s novým nastavením. Pro tyto úkony je jednodušší použít externích aplikací. Pro vzdálené ovládání příkazového řádku vám doporučuji PuTTY (drobná aplikace, i pro Windows). S PuTTY je možné ovládat nejen VLC, ale celý vzdálený počítač a komunikace mezi počítači probíhá zabezpečeně (SSH). Předpokladem k úspěšnému navázání spojení je nainstalován OpenSSH na počítači (serveru), kde požadujeme spouštět VLC pro streamování. Ukážeme si variantu provozu s jedním DVB tunerem a dvěma DVB tunery, kdy jeden z nich bude vysílat stále stejný multiplex a druhý bude vysílání měnit dle požadavků.
Server – 1 tuner
- nainstalováno VLC, OpenSSH, screen
Vytvořte adresář „vlc-dvb“ ve svém domovském adresáři. Sem uložte soubory nastavení pro jednotlivé frekvence. Na začátku každého souboru použijte příkaz „cvlc“ místo příkazu „vlc“.
Po uložení všech vám dostupných frekvencí by adresář „vlc-dvb“ mohl obsahovat podobné soubory:
dvb570 //čt dvb746 //prima love dvb778 //nova
Následující skript zkopírujte, poupravte hodnotu „soubor“ a uložte do svého domovského adresáře pod jednoduchým názvem (např. pro dvb570 název „ct“ adt.). Postup opakujte pro každý soubor v adresáři vlc-dvb.
#!/bin/bash # # Konopik Vladislav # (VLKODLAK) # @ 2012 # # zjisti PID pokud jiz byl skript spusten PID=$(ps aux | grep VLC_TV_NET | grep -v grep | awk {'print $2'}) # nastaveni cesty k souboru pro VLC soubor=/home/vlk/vlc-dvb/dvb570 # spusteni screenu s vlc streamem # - dalsi spusteni skriptu vypne fungujici stream a # znovu jej spusti s novym nastavenim (proto tolik verzi tohoto skriptu) if [ "$PID" = "" ]; then echo "SPOUSTIM - screen pro vlc" screen -dmS VLC_TV_NET /bin/bash sleep 1 echo "SPOUSTIM - vlc stream z tuneru" screen -S VLC_TV_NET -X exec bash $soubor echo " STREAM JE VYSILAN" else echo "UKONCUJI - stary screen pro vlc" kill $PID sleep 1 echo "SPOUSTIM - novy screen pro vlc" screen -dmS VLC_TV_NET /bin/bash sleep 1 echo "SPOUSTIM - vlc stream z tuneru" screen -S VLC_TV_NET -X exec bash $soubor echo " STREAM JE VYSILAN" fi # # konec skriptu #
Další skript nikterak neupravujte a rovnou jej uložte pod názvem „stop“ do domovského adresáře.
# #!/bin/bash # # Konopik Vladislav # (VLKODLAK) # @ 2012 # # zjisti PID pokud existuje a ukonci vlc stream PID=$(ps aux | grep VLC_TV_NET | grep -v grep | awk {'print $2'}) if [ "$PID" = "" ]; then echo "VLC pro stream nebylo spusteno" else echo "UKONCUJI - vlc stream" kill $PID fi # # konec skriptu #
V mém případě přibylo celkem 7 souborů. V adresáři vlc-dvb : dvb570, dvb746, dvb778 a v domovském adresáři : ct, prima, nova a stop.
Klient – 1 tuner
- nainstalováno VLC, OpenSSH, screen
Spusťte PuTTY. Do kolonky Host Name zadejte IP adresu serveru. Connection type ponechejte na SSH. Poté klikněte na Default Settings a uložte toto nastavení pomocí tlačítka Save.
Přesuňte se na záložku Connection>Data a vyplňte jméno uživatele na serveru, kde budete provozovat VLC. Přesuňte se zpět na záložku Session, klikněte na Default Settings a Save.
PuTTY již máte nastavené a při dalším spuštění budete zadávat jen heslo k účtu na serveru.
bash nova //spustí multiplex 778MHz bash ct //vypne vlc a znovu jej spustí s multiplexem 570MHz bash prima //vypne vlc a znovu jej spustí s multiplexem 746MHz bash stop //ukončí vlc
Samozřejmě můžete PuTTY po provedení některého z příkazů zavřít a začít sledovat obsah ve VLC. A to je prý příkazový řádek v Linuxu složitý.
Server – 2 tunery
Mnou oblíbená kombinace, než se jeden z DVB-T tunerů odebral do křemíkového nebe.
V kombinaci dvou tunerů budete potřebovat více souborů s nastavením VLC. Jména souborů použijte například „dvb570a1“ pro první tuner a „dvb570a2“ pro druhý tuner. Obsahem jsou soubory totožné, až na položku dvb-adapter=0. Tuto položku je potřeba pro druhý tuner (soubor dvb570a2) změnit na dvb-adapter=1.
Skript pro provoz dvou tunerů je trochu jiný. Položka soubor1 je určena pro nastavení prvního (stále vysílajícího) tuneru. Tato položka by měla odkazovat na stejný soubor, i když budete používat více verzí tohoto skriptu. Položka soubor2 slouží pro změnu vysílaného obsahu.
Pokud tedy chcete stále vysílat ČT, bude mít soubor1 zadanou cestu k dvb570a1 a soubor2 bude nastaven na dvb746a2 (jméno skriptu např. prima). V druhém skriptu bude soubor1 opět dvb570a1 a soubor2 tentokráte dvb778a2 (jméno skriptu např. nova).
#!/bin/bash # # Konopik Vladislav # (VLKODLAK) # @ 2012 # # zjisti PID pokud jiz byl skript spusten PID1=$(ps aux | grep VLC_TV_NET_1 | grep -v grep | awk {'print $2'}) PID2=$(ps aux | grep VLC_TV_NET_2 | grep -v grep | awk {'print $2'}) # nastaveni cesty k souborum pro VLC # - pro 1 tuner (hlavni stream) soubor1=/home/vlk/vlc-dvb/dvb570a1 # - pro 2 tuner (vedlejsi stream) soubor2=/home/vlk/vlc-dvb/dvb746a2 # spusteni screenu s vlc pro hlavni stream # - dalsi spusteni skriptu tento hlavni stream neukonci # jen upozorni na jeho provoz if [ "$PID1" = "" ]; then echo "SPOUSTIM - screen pro hlavni vlc stream" screen -dmS VLC_TV_NET_1 /bin/bash sleep 1 echo "SPOUSTIM - vlc stream z 1 tuneru" screen -S VLC_TV_NET_1 -X exec bash $soubor1 echo " TUNER 1 VYSILA" else echo "VLC-STREAM Z 1 TUNERU JE STALE V PROVOZU" fi # spusteni screenu s vlc pro vedlejsi stream # - dalsi spusteni skriptu vypne vedlejsi stream a # znovu jej spusti s nastavenim v souboru2 if [ "$PID2" = "" ]; then echo "SPOUSTIM - screen pro vedlejsi vlc stream" screen -dmS VLC_TV_NET_2 /bin/bash sleep 1 echo "SPOUSTIM - vlc stream z 2 tuneru" screen -S VLC_TV_NET_2 -X exec bash $soubor2 echo " TUNER 2 VYSILA" else echo "UKONCUJI vedlejsi vlc stream" kill $PID2 sleep 1 echo "SPOUSTIM - screen pro vedlejsi vlc stream" screen -dmS VLC_TV_NET_2 /bin/bash sleep 1 echo "SPOUSTIM - vlc stream z 2 tuneru" screen -S VLC_TV_NET_2 -X exec bash $soubor2 echo " TUNER 2 VYSILA" fi # # konec skriptu #
„Stop“ skript pro dva tunery
#!/bin/bash # # Konopik Vladislav # (VLKODLAK) # @ 2012 # #zjisti PID pokud existuje a ukonci vlc stream PID1=$(ps aux | grep VLC_TV_NET_1 | grep -v grep | awk {'print $2'}) PID2=$(ps aux | grep VLC_TV_NET_2 | grep -v grep | awk {'print $2'}) if [ "$PID1" = "" ]; then echo "VLC pro hlavni stream nebylo spusteno" else echo "UKONCUJI - vlc stream z 1 tuneru" kill $PID1 fi if [ "$PID2" = "" ]; then echo "VLC pro vedlejsi stream nebylo spusteno" else echo "UKONCUJI - vlc stream z 2 tuneru" kill $PID2 fi # # konec skriptu #
Klient – 2 tunery
Se serverem se opět jednoduše spojte pomocí PuTTY. Zadáte-li:
bash nova //spustí se multiplex 570MHz na tuneru č.1 //spustí se i multiplex 778MHz na tuneru č.2 bash prima //nechá spuštěný multiplex 570MHz na tuneru č.1 //vypne vlc a znovu jej spustí s multiplexem 746MHz na tuneru č.2 bash stop //ukončí vlc pro oba tunery
Dnes jsem vám ukázal jednu z možností provozování DVB-T streamu na domácí síti. Možná není úplně ideální, ale přináší nejméně problémů a požadavků na obsluhu (webové rozhraní zamrzá, pro telnet je zapotřebí zadávat mnoho příkazů atd.). Přeji vám příjemnou zábavu při sledování DVB-T obsahu na domácí síti.