přejít na obsah přejít na navigaci

Linux E X P R E S, Jak ve VLC streamovat multimédia – díl I

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

player-icon_1.jpg

VLC je celý vystavěn na systému modulů, které mu dodávají vysokou pružnost při používání. Aplikaci lze pohodlně používat nejen k přehrávání běžných multimediálních souborů, ale i pro odesílání takovýchto dat do sítě. Pro streamování (odesílání multimediálních dat do sítě) je v aplikaci přítomno několik modulů a tento seriál vám pomůže při jejich nastavení.


Několik poznámek úvodem:

  • Pro nastavení streamu je nejvhodnější používat základní textový editor (gedit, kwrite atd.), ve kterém si daný příkaz jednoduše připravíte (zkopírujete) nebo poupravíte a poté jej vložíte do příkazového řádku k vykonání. Není na tom nic těžkého a dostanete z aplikace maximum. 
  • GUI je pro nastavení složitějších streamů nevhodné. Je sice možné v tomto rozhraní nastavit i velmi složitý stream, ale než se ke všemu proklikáte a dopíšete potřebné parametry, vyzkoušíte pomocí textového editoru a příkazového řádku několik variant streamu.
  • Ne všechny formáty multimédií jsou vhodné pro streamování. Některé formáty je nutné před samotným vysláním do sítě překódovat, což značně zatěžuje procesor. Zvažte proto, je-li opravdu potřeba takovýto formát streamovat, nebo raději zpřístupníte uživatelům tato data v domácí síti například pomocí ftp nebo smb.

Příklady se vztahují k VLC verze 2 a otestovány jsou ve verzích 2.0.3 (Debian), 2.0.8 (Mint). 

Stream samotný může být tak jednoduchý, že je možné jej zadat i pomocí GUI rozhraní.

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

Pokročilý stream, zabírající několik řádků, však v GUI rozhraní raději ani nezkoušejte sestavit (textový editor a příkazový řádek představují mocný nástroj Linuxu).

vlc dvb-t:// --dvb-frequency 746000000 --dvb-bandwidth 8 --dvb-adapter 0 --ts-es-id-pid --programs=772,774,1025,1026,5633 --ttl 3 --sout-udp-caching 1500 --sout '#duplicate{dst="transcode{vcodec=mp2v,vb=600,scale=0.5,acodec=mpga,ab=128,channels=2,
samplerate=48000,deinterlace}:duplicate{dst=std{access=http,mux=ts,dst=:8080},
dst=std{access=udp,mux=ts,dst=224.0.0.0,sap,name=Ocko}}",select=program=1025,
dst="transcode{vcodec=mp2v,vb=600,scale=0.5,acodec=mpga,ab=128,
channels=2,samplerate=48000,deinterlace}:duplicate{dst=std{access=http,mux=ts,dst=:8081},
dst=std{access=udp,mux=ts,dst=224.0.0.1,sap,name=OckoGold}}",select=program=1026,
dst=std{access=http,mux=ts,dst=:8082},select=program=772,
dst=std{access=http,mux=ts,dst=:8083},select=program=774,dst=std{access=http,mux=ts,
dst=:8084},select=program=1025,dst=std{access=http,mux=ts,dst=:8085},select=program=1026,
dst=std{access=http,mux=ts,dst=:8086},select=program=5633}'

Pokud na vás jdou mdloby po zhlédnutí zápisu pokročilého streamu, ničeho se nelekejte. Po přečtení tohoto a následujícího dílu o streamování získáte znalosti pro pochopení i sestavení takto pokročilých streamů. Začněme však pěkně od základů.

Nápověda VLC

Každý modul se nastavuje pomocí několika parametrů. Pro výpis dostupných modulů a jejich parametrů vám poslouží následující příkaz.

vlc -H > vlcnapoveda

Ve vašem domovském adresáři vznikl soubor vlcnapoveda s popisem všech modulů a parametrů pro nastavení. Po prohlédnutí tohoto souboru budete možná zaskočeni rozsáhlostí nápovědy. Nelekejte se, není potřeba znát všechny parametry, používat budeme jen některé. Hledání potřebného parametru v tomto souboru je zdlouhavé, proto se častěji používá nápověda pro jednotlivé moduly ve tvaru vlc -p <název_modulu> --advanced.

vlc -p standard --advanced

Vypíše všechny parametry pro modul standard.

Další nápovědou (pouze v angličtině) vám může být uživatelské fórum a wiki pro VLC, nebo zkuste dotaz v internetovém vyhledávači.

Moduly pro streamování

standard – základní modul pro práci s multimédii, jehož výstupem může být soubor nebo odeslání do sítě (stream). Převážně se používá zkrácený zápis std

rtp – real time protokol je vystavěn nad udp a umožňuje streamovat na unicast i multicast adresy

es – elementary streams je určen pro oddělení jednotlivých složek streamu (video, audio, titulky)

transcode – modul pro překódování zdroje dat. Používá se pro změnu kodeku nebo aplikování některého z filtrů (text, logo, zkreslení atd.)

duplicate – nejčastěji se používá u zařízení (DVB, DVD, kamery atd.), ke kterým je vícenásobný přístup pro čtení dat problematický, nebo přímo nemožný

display – zobrazuje obsah na obrazovce stroje, odkud se vysílá

Zdroje dat pro streamování

Zdrojem dat nemusí být jen soubor. Aplikace je schopna pracovat s mnoha zařízeními (DVD, BlueRay, DVB-T/C/S, API V4L atd.), jež jsou dostupná ve vašem systému.

vlc film.mpg

soubor nacházející se v domovském adresáři (výchozí adresář, není-li uvedena absolutní cesta k souboru)

vlc dvdsimple:///dev/dvd

DVD obsah, u kterého dojde k přeskočení menu. Vhodný doplněk pro DVD je libdvdcss. Stáhnout balíček pro váš systém můžete z ftp://ftp.videolan.org/

vlc cdda:///dev/cdrom

audio CD

vlc dvb-t://

tuner pro terestriální vysílání, obdobně se používá dvb-s:// pro satelitní a dvb-c:// pro kabelové vysílání

vlc v4l://

zařízení komunikující pomocí API V4L

vlc screen://

zachytává dění na ploše – používejte raději s modulem transcode, protože pořízené video o délce 30 sekund a 50 fps bez překódování má velikost přes 1 GB

Zdrojem dat může posloužit i datové úložiště nebo již probíhající stream (ftp://, udp://, http:// atd.).

Příkaz vlc je možné zaměnit za cvlc, nechcete-li při streamování spouštět GUI.

Standard - nastavení

Modul Standard se používá pro vysílání nebo ukládání multimediálních dat. Pro nastavení slouží několik parametrů, které se vzájemně ovlivňují (např. pro udp lze použít jen TS kontejner).

std{access=,mux=,dst=}

access – určuje výstup zdroje

  • – file: výstup do souboru, kontejner TS, PS, Ogg, ASF, AVI
  • udp: stream na unicast nebo multicast adresu, kontejner TS
  • – http: stream přes http protokol, kontejner TS, PS, Ogg, ASF
  • mmsh: stream přes MMS protokol, který je zapouzdřen do http, kontejner ASFH (kontejner je – – stejný jako ASF, jen je poupraven pro použití s mms zapouzdřeným do http)

mux – druh kontejneru pro stream

  • – ts: transport stream varianta formátu MPEG2, která se používá pro vysílání digitální televize
  • – ps: formát MPEG2 souborů (.mpeg)
  • – ogg: kontejner z projektu Xiph
  • – asf: používá se pro kodeky od firmy Microsoft (při vysílání pomocí mms přes http se používá asfh)
  • – avi: používá se pouze pro ukládání (např. pro screen:// nebo cdda://)
  • – mp4: jen pro MPEG4 soubory a pouze pro ukládání

dst – cíl vysílaného streamu

Nastavení cíle je ovlivněno nastavením parametru access.

  • – file: cílem je absolutní cesta s názvem ukládaného souboru
  • – udp: cílem je unicast nebo multicast adresa a port
  • – http, mmsh: cílem je většinou port (není-li uvedena IP, naslouchá VLC na všech rozhraních)

Přehlednou tabulku závislostí mezi access, mux, dst a jednotlivými kodeky naleznete na stránce streaming-features.

Standard – příklady

access=file

Spolupracuje se všemi zmíněnými kontejnery.

vlc hudba1.mp3 --sout '#std{access=file,mux=ts,dst=pokus}'

Vytvoří soubor pokus s obsahem hudba1.mp3.

vlc hudba2.mp3 --sout-file-append --sout '#std{access=file,mux=ts,dst=pokus}'

Do již vytvořeného souboru pokus přidá obsah souboru hudba2.mp3.

  • --sout-file-append - přidá výstupní data na konec souboru, proto došlo ke sloučení obsahu souborů hudba1.mp3 a hudba2.mp3 v souboru pokus.
vlc dvdsimple:///dev/dvd --sout-all --sout
'#std{access=file,mux=ps,dst=film.mpg}' vlc://quit

Příkaz vykonal zálohu DVD filmu do souboru film.mpg se všemi zvukovými stopami a titulky.

  • dvdsimple:// – zajistí přehrávání bez menu (velmi důležité, neboť by se VLC pokoušelo neustále přehrávat jen menu filmu)
  • /dev/dvd – absolutní cesta k zařízení (proto jsou celkem tři lomítka)
  • --sout-all – globální parametr, díky kterému budou ze zdroje vysílány všechny dostupné proudy (u DVD všechny zvukové stopy a titulky)
  • vlc://quit speciální parametr pro ukončení VLC (bez tohoto parametru bude VLC zálohovat DVD neustále dokola)
vlc dvdsimple:///dev/dvd --audio-language eng --sub-language cz --sout
'#std{access=file,mux=ps,dst=film.mpg}' vlc://quit

Záloha filmu bude obsahovat anglickou zvukovou stopu a české titulky.

  • --audio-language <hodnota> – dvou až třímístný kód země pro výběr jazyka zvukové stopy (cz, cze, en, eng atd.), více hodnot oddělujte čárkami (zadání 'none' zabrání změně jazyka)
  • --sub-language <hodnota> – dvou až třímístný kód země pro výběr jazyka titulků
vlc cdda:///dev/cdrom --cdda-track 2 --sout '#std{access=file,mux=ogg,dst=cdhudba}' vlc://quit

Uložena bude druhá skladba z hudebního CD

  • --cdda-track <číslo> – ze zdroje bude přehrána pouze vybraná skladba
  • mux= – v příkladu je použito Ogg kontejneru, ale použít lze i kontejner AVI

vlc screen:// --screen-fps 50 --sout
'#std{access=file,mux=avi,dst=zaznamplochy}'

Vznikne objemný soubor (30 sekund záznamu = 1 GB dat při rozlišení 1024×768) obsahující dění na celé pracovní ploše, vyjma zachycení pohybu myši.

--screen-fps <číslo> – udává hodnotu snímků za vteřinu (u některých verzí VLC jsem se setkal s nefunkčností záznamu, pokud bylo fps nastaveno pod 5)

mux= – použít lze i ASF kontejner (velikost se příliš nezmění, kvalita ale zřejmě zhorší – subjektivní dojem)

vlc screen:// --screen-fps 25 --screen-top 100 --screen-left 300 --screen-height
480 --screen-width 600 --sout '#std{access=file,mux=avi,dst=zaznamplochy}'

Soubor bude obsahovat záznam výřezu plochy

  • --screen-height <číslo> – výška výřezu plochy v pixelech
  • --screen-width <číslo> – šířka výřezu plochy v pixelech
  • --screen-top <číslo> – levý horní roh výřezu je posunut o zadané pixely od horního okraje obrazovky
  • --screen-left <číslo> – levý horní roh výřezu je posunut o zadané pixely od levého okraje obrazovky
  • --screen-follow-mouse – sleduje pohyb myši a výřez tak lze posouvat, byť myš samotná není ve videu zachycena

access=udp

Spolupracuje pouze s TS kontejnerem.

vlc hudba1.mp3 --ttl 3 --loop --sout
'#std{access=udp,mux=ts,dst=224.0.0.0}'

Stream bude odeslán pomocí udp na multicast adresu 224.0.0.0. Pro přehrávání streamu zadejte adresu udp://@224.0.0.0

  • --ttl <číslo> – počet aktivních prvků sítě (router), které vysílaný paket přežije
  • --loop – globální parametr pro neustálé opakování
vlc film.mpg --sout-udp-caching 3000 --ttl 3 --sout
'#std{access=udp,mux=ts,dst=224.0.0.0}'

Film bude před odesláním na multicast adresu načten do vyrovnávací paměti.

  • --sout-udp-caching <číslo> – velikost vyrovnávací paměti v ms (1000 = 1s)
vlc film.mpg --sout-udp-caching 3000 --ttl 3 --sout
'#std{access=udp,mux=ts,dst=224.0.0.0,sap,name=film}'

Pro udp je možné u standard modulu použít oznamování pomocí SAP. Stream lze opět přehrát zadáním adresy udp://@224.0.0.0 nebo v Seznamu skladeb využijte volby Místní síť>Network streams (SAP)>film.

vlc dvdsimple:///dev/dvd --ttl 3 --sout-all --sout
'#std{access=udp,mux=ts,dst=224.0.0.0,sap,name=dvd film}'

Uživatel, který si přehraje stream zadáním již známé adresy (nebo pomocí SAP), si bude moci díky parametru --sout-all vybrat jazyk nebo titulky ze zdrojového DVD přímo ve svém přehrávači.

access=http

Spolupracuje s TS, PS, Ogg, ASF kontejnery.

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

Pro přehrávání streamu zadejte adresu http://ip_odkud_se_vysílá:8080/hudba, nebo pro ověření funkčnosti můžete na počítači, odkud vysíláte stream, zadat http://localhost:8080/hudba.

vlc hudba1.mp3 --sout-http-user jarda --sout-http-pwd soukrome --sout
'#std{access=http,mux=ts,dst=:8080/hudba}'

Stream nyní přehrajete pouze se znalostí přístupových údajů.

  • --sout-http-user <jméno> – nastaví uživatelské jméno
  • --sout-http-pwd <heslo> nastaví heslo pro stream
vlc cdda:///dev/cdrom --loop --sout '#std{access=http,mux=ogg,dst=:8080/cd}'

Streamem se stane celé hudební CD, které přehrajete zadáním adresy

http://ip_odkud_se_vysílá:8080/cd

  • --loop globální parametr pro neustálé opakování
vlc dvdsimple:///dev/dvd --sout-all --sout
'#std{access=http,mux=ps,dst=:8080/dvd}'

Stream filmu z DVD média bude opět obsahovat všechny jazykové verze a titulky.

  • i zde lze použít TS kontejner jako v příkladech s udp
vlc screen:// --screen-fps 25 --screen-height 100 --screen-width 100 --screen-
follow-mouse --sout '#std{access=http,mux=asf,dst=:8080/plocha}'

Takovýto stream je sice možný, ale bez překódování je nesmyslný.

  • oproti nastavení v příkladu access=file, lze použít jen kontejner ASF
  • bez překódování dochází k vysoké zátěži sítě

access=mmsh

Spolupracuje pouze s ASFH kontejnerem.

Stream pomocí mmsh je možné přehrát v aplikacích od Microsoftu.

vlc hudba.mp3 --loop --sout '#std{access=mmsh,mux=asfh,dst=:8080/hudba}'

Stream přehrajete zadáním adresy

Windows Media Player          mms://ip_odkud_se_vysílá:8080/hudba

VLC                                       mmsh://ip_odkud_se_vysílá:8080/hudba

vlc film.wmv --sout '#std{access=mmsh,mux=asfh,dst=:8080/film}'

Stream filmu přehrajete obdobným způsobem jako soubor hudba.mp3.

vlc screen:// --screen-fps 25 --screen-height 100 --screen-width 100 --screen-
follow-mouse --sout '#std{access=mmsh,mux=asfh,dst=:8080/plocha}'

Streamování výřezu plochy jako u příkladu access=http. Povšimněte si použitého kontejneru. Kvůli mmsh je potřeba použít variantu asfh na rozdíl od asf u http výstupu.

RTP – nastavení

Real time protokol vysílá stream obdobně jako modul standard pomocí udp protokolu. Navíc umožňuje vystavení souboru SDP popisujícího parametry vysílání. Uživatel tak zadá adresu k souboru SDP a přehrávač naladí vysílaný stream. Častěji se však SDP používá v kombinaci se SAP. U rtp je možné použít jen kontejnery TS a PS.

rtp{dst=,port=,ttl=}

dst= cílová ip adresa (unicast i multicast)
port= cílový udp port
ttl= hodnota určuje počet aktivních prvků sítě, které vysílaný paket přežije

RTP – příklady

vlc film.mpg --sout '#rtp{dst=224.0.0.0,port=5004,ttl=2}'

K přehrání streamu dojde zadáním adresy rtp://@224.0.0.0:5004

vlc film.wmv --sout-rtp-caching 3000 --sout
'#rtp{dst=224.0.0.0,port=5004,ttl=2,sdp=sap,name=film}'

Stream lze přehrát zadáním adresy nebo použitím SAP oznamování.

  • --sout-rtp-caching <číslo> – velikost vyrovnávací paměti v ms
vlc dvdsimple:///dev/dvd --audio-language eng --sub-language cz --sout
'#rtp{dst=224.0.0.0,port=5004,ttl=2,sdp=sap,name=dvd}'

Již dobře známý stream DVD média. Taktéž lze použít parametry --loop, --sout-all.

Všechny příklady týkající se streamování přes udp a rtp jsou směrovány na multicast adresu, která je v rozmezí 224.0.0.0 – 239.255.255.255. Pro domácí (lokální) použití jsou rezervovány rozsahy 224.0.0.0/24 a 239.0.0.0/8.

ES – nastavení

Modul ES se nastavuje stejně jako modul Standard. Navíc však obsahuje možnost rozdělení streamu na samostatně vysílanou (ukládanou) obrazovou a zvukovou složku pomocí rozšíření parametrů o -audio a -video.

es{access=,mux=,dst=} nebo
es{access-video=,mux-video=,dst-video=,access-audio=,mux-audio=,dst-audio=}

ES – příklady

vlc film.mpg --sout '#es{access-video=http,mux-video=ts,dst-
video=:8080/video,access-audio=http,mux-audio=ts,dst-audio=:8080/audio}'

Stream filmu bude obsahovat na jedné adrese pouze video a na druhé pouze audio.

vlc film.mpg --sout '#es{access-video=udp,mux-video=ts,dst-
video=224.0.0.0,access-audio=file,mux-audio=ts,dst-audio=zvuk_z_filmu}'

Na udp adresu je odeslána video složka a audio je ukládáno do souboru.

To je dnes vše

První díl máte úspěšně za sebou. Příště si ukážeme zbývající moduly transcode, display a duplicate.

Nahoru

Odkazy

Příspěvky

"překlep"
Ravise 15. 10. 2013, 18:38:40
Odpovědět  Odkaz 
Pod nadpisem Nápověda je řádek
"vlc -H &gt; vlcnapoveda"
I když to většina zdejších čtenářů pochopí, někoho může převedení znaku na entitu zmást.
Lukáš Jelínek Re: "překlep"
Lukáš Jelínek 15. 10. 2013, 19:47:04
Odpovědět  Odkaz 
Díky za upozornění, opraveno.
Jak ve VLC streamovat multimédia – díl I
LukyBrno 16. 10. 2013, 20:58:15
Odpovědět  Odkaz 
..dík. Hezký článek !

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Vladislav Konopík


  • Distribuce: Debian / Mint-debian based
  • Grafické prostředí: GNOME



Public Relations

Bezpečné zálohování a spolehlivá obnova dat jsou odpovědí na všudypřítomnou hrozbu ransomwaru

VeeamUž to tak vypadá, že ransomware ze světa nezmizí, a organizace se tomu musí přizpůsobit, aby dokázaly tuto hrozbu přežít a zajistit odolnost svého podnikání vůči jejím dopadům. Na ransom­ware se musíme přestat dívat jako na náhodnou událost, ale vnímat ji jako stále přítomnou hrozbu, kdy už není otázka, zda a kdy, ale jak často nás zasáhne.

Pokračování ...



Public Relations

Jak se chránit před zranitelnostmi? MSP službou!

ZebraPočet softwarových zranitelností neustále roste – zatímco v roce 2021 bylo dle informací katalogu CVE zjištěno celkem 20 171 zranitelností, vloni došlo k dalšímu nárůstu na rekordních 25 277 případů. Navíc také roste jejich závažnost, a i v roce 2022 se zvýšil počet tzv. kritických zranitelností. Mezi nimi například proslulý Log4J.

Pokračování ...



Public Relations

Průkopnická automatizovaná obrana pohyblivých cílů

SophosS tím, jak se prostředí kybernetických hrozeb stává stále složitějším, bezpečnostní týmy čelí rapidnímu nárůstu počtu hrozeb. Mnoho organizací se potýká s vysokým počtem výstrah a falešně pozitivních hlášení, což vede k neustálému úsilí o jejich vyřešení a zbytečnému zatěžování zdrojů a snižování účinnosti zabezpečení.

Pokračování ...


Tagy