Linux E X P R E S

Facebook

Jak ve VLC streamovat multimédia – díl III

player-icon_1.jpg

V předchozích dílech jste získali znalosti pro jednoduché i pokročilé streamování multimediálních dat. Veškeré příklady, které jsem vám ukázal, mají drobný neduh. Každý z nich spustí jednu instanci VLC. Dnes se s vámi podělím o znalost provozu několika streamů v jediné instanci aplikace pomocí VideoLAN Manageru (VLM), který je součástí VLC, a navíc umožňuje jednu specialitku v podobě „streamu na přání“ (VOD).


Broadcast

VideoLAN Manager rozlišuje dva druhy streamů:

  • broadcast – volba pro stream, který může spouštět/zastavovat pouze správce nastavující vysílání a klient nemá žádnou kontrolu nad ovládáním streamu
  • vod – volba pro stream, který správce definuje, ale klient jej spouští

Konfigurační soubor pro VLM obsahuje podobný zápis a používá se pro něj přípona vlm.

new stream1 broadcast enabled
setup stream1 input hudba.mp3
setup stream1 output #std{access=http,mux=ts,dst=:8080}
control stream1 play

Takovýto zápis je totožný s příkazem:

vlc hudba.mp3 --sout '#std{access=http,mux=ts,dst=:8080}'

Pro načtení konfiguračního souboru slouží parametr --vlm-conf a použití je následovné:

vlc --vlm-conf konfigurace.vlm

Začátek konfiguračního souboru:

  • new – vytváří nový broadcast, vod nebo schedule element 
  • stream1 – název streamu, který musí být v celém souboru unikátní a nesmí být použito názvu "media" a "schedule"
  • enabled/disabled – zapíná použitý element, při použití disabled nelze stream nikterak spustit

Broadcast – nastavení

Parametr setup nabývá těchto voleb:

  • input – zdroj multimediálních dat
  • option – slouží pro zadání dodatečných nastavení
  • output – definuje výstupní metodu

Parametr control určuje stav streamu pomocí voleb play, stop, pauseseek.

Broadcast – příklady

new stream2 broadcast enabled loop
setup stream2 input hudba.mp3 
setup stream2 option loop
setup stream2 output #standard{access=http,mux=ts,dst=:8080} 
control stream2 play

Příklad streamu s funkcí loop

Vysílání pomocí broadcast není příliš vhodné pro jednotlivé soubory. I při použití loop funkce totiž přehrávání streamu skončí s koncem souboru a poté je nutné stream znovu naladit. Broadcast se proto více používá v kombinaci s časovým plánem (schedule) nebo pro zdroje se stálým tokem dat (např. DVB).

new stream3 broadcast enabled
setup stream3 input dvb-t://frequency=746000000:bandwidth=8:dvb-adapter=0
setup stream3 option ts-es-id-pid
setup stream3 option programs=772,774,1025,1026,5633
setup stream3 output #duplicate{dst=std{access=http,mux=ts,dst=:8080},
 select="program=772",dst=std{access=http,mux=ts,dst=:8081},
 select="program=774",dst=std{access=http,mux=ts,dst=:8082},
 select="program=1025",dst=std{access=http,mux=ts,dst=:8083},
 select="program=1026",dst=std{access=http,mux=ts,dst=:8084},
 select="program=5633"}
control stream3 play

Zápis nastavení pro broadcast stream DVB-T signálu

Možná vás právě napadlo používat VLM pro elegantní přeladění vysílaného obsahu DVB-T, kdy u jedné frekvence nastavíte control na hodnotu play a u ostatních frekvencí na hodnotu stop. Takovýto počin však není funkční ani ve VLC 2.0.8. Ve většině případů docházelo při zastavení streamu DVB-T signálu k zamrznutí celé aplikace a místo spuštění streamu s jinou frekvencí bylo nutné vynucené ukončení VLC (kill).

Schedule – nastavení

Vysílání v zadaný čas (schedule) je dostupné pouze pro broadcast stream.

Parametr setup nabývá těchto voleb:

  • date – nastavuje první spuštění streamu ve formátu:

rok/měsíc/den–hodina:minuty:vteřiny

  • period – nastavuje prodlevu pro opětovné spuštění streamu ve formátu:

rok/měsíc/den–hodina:minuty:vteřiny

  • repeat – nastaví počet opakování streamu
  • append – vykoná příkaz, který většinou spustí nebo zastaví stream, ale použít lze jakýkoliv příkaz VLM

VLM nepoužívá kalendářní měsíce, ale počítá měsíc jako 30 dní.

Schedule – příklady

new stream4 broadcast enabled 
setup stream4 input video.mpg 
setup stream4 option sout-udp-caching=3000 
setup stream4 option ttl=3 
setup stream4 output #std{access=udp,mux=ts,dst=224.0.0.0,sap,name=video} 

new plan1 schedule enabled 
setup plan1 date 2013/10/8-17:45:00 
setup plan1 period 0/0/1-0:0:0 
setup plan1 repeat 5 
setup plan1 append control stream4 play

Příklad streamu s nastaveným časovým plánem bude poprvé spuštěn 10. října 2013 v 17:45 a poté bude repríza streamu po následujících pět dní ve stejný čas (period 0/0/1-0:0:0).

V minulých dílech jsme hodnoty globálním parametrům předávali pomocí mezery (např. --sout-udp-caching 3000). Ve VLM zadáváme globální parametry bez počátečních pomlček a hodnotu jim předáváme pomocí "=" (sout-udp-caching=3000).

new stream3 broadcast enabled
setup stream3 input dvb-t://frequency=746000000:bandwidth=8:dvb-adapter=0
setup stream3 option ts-es-id-pid
setup stream3 option programs=772,774,1025,1026,5633
setup stream3 output #duplicate{dst=std{access=http,mux=ts,dst=:8080},
 select="program=772",dst=std{access=http,mux=ts,dst=:8081},
 select="program=774",dst=std{access=http,mux=ts,dst=:8082},
 select="program=1025",dst=std{access=http,mux=ts,dst=:8083},
 select="program=1026",dst=std{access=http,mux=ts,dst=:8084},
 select="program=5633"}

new start_dvb schedule enabled 
setup start_dvb date 2013/10/8-18:00:00 
setup start_dvb period 0/0/1-0:0:0 
setup start_dvb append control stream3 play

new stop_dvb schedule enabled 
setup stop_dvb date 2013/10/8-23:30:00 
setup stop_dvb period 0/0/1-0:0:0 
setup stop_dvb append control stream3 stop

Příklad televizního streamu, který se poprvé spustí 10. října 2013 v 18:00 a tentýž den se ve 23:30 vypne:

  • chybějící nastavení repeat způsobí vykonávání časového plánu donekonečna (stream se bude zapínat a vypínat každý den ve stejnou dobu – period 0/0/1-0:0:0)
  • takovéto spouštění a zastavování DVB streamu nezpůsobuje zamrznutí aplikace jako ruční zastavování pomocí GUI/web/telnet rozhraní

VOD

Video On Demand (video na přání) se vysílá pomocí protokolu RTSP, který dává uživateli možnost řídit (spouštět, pozastavit, zastavit) přijímaný stream. Chcete-li nabízet streamy v podobě VOD, je nutné spustit VLC s podporou protokolu RTSP pomocí parametrů --rtsp-host a --rtsp-port.

vlc --rtsp-host 10.0.0.25 --rtsp-port 5554 --vlm-conf konfigurace.vlm

Výchozí nastavení RTSP ve VLC naslouchá na všech rozhraních na portu 554. IP uvedená v příkladu je síťová adresa počítače, odkud se bude vysílat.

U VOD nelze použít funkcí loop, control a nenastavuje se výstup zdroje. Tak jako je broadcast vhodný pro stream ze zařízení, je vod vhodné pro streamování multimediálních souborů.

new stream5 vod enabled
setup stream5 input film.mpg

Takovýto stream na přání spustíte zadáním rtsp://10.0.0.25:5554/stream5

VOD umí bezproblémově pracovat jen s formáty kompatibilními s TS a PS kontejnery.

To není vše!

Tímto jsem téměř vyčerpal své znalosti, nikoliv však možnosti aplikace. V seriálu uvedené příklady jsou otestovány na verzích 2.0.3 a 2.0.8 v systému Debian 7.1 a Mint. V době psaní byla uvolněna nová stabilní verze VLC 2.1.0, která přináší některá vylepšení streamování (nové kodeky, protokol atd.). Pro podrobnější informace doporučuji navštívit oficiální stránky projektu, kde naleznete i originální dokumentaci.

Diskuze (7) Nahoru