Někdy nastanou situace, kdy je vhodné nebo přímo žádoucí uložit multimediální obsah z internetových médií pro pozdější zhlédnutí. Používáte-li Firefox, lze s nadsázkou říci, že obsah v něm přehraný je možné uložit.
Varování: stahováním multimediálního obsahu můžete porušovat autorská práva. Tento popis má sloužit k edukativním účelům.
Potřebný software
Každý provozovatel serveru multimediální obsah distribuuje a chrání po svém, proto neexistuje jednotné řešení pro uložení zmíněného obsahu. Také je potřeba rozlišovat typ multimédia. Jedná-li se o uložený soubor (již odvysílaný pořad), nebo živě vysílaný proud dat (live stream). U serverů (Netflix, HBO), které chrání obsah pomocí Silverlight však s Linuxem neuspějete (pipelight není plnohodnotnou náhradou).
Programové vybavení je tudíž obsáhlejší a zabývat se budeme zejména:
JDownloader
Firefox – s rozšířením AdBlock, User-Agent Switcher
FFmpeg
Wireshark
VLC
Virtualbox (není nutný, ale vhodný)
JDownloader
Java aplikace pro stahování dat (nejen videa a audia), která jsou dostupná v běžném formátu (nestreamují se) na mnoha podporovaných serverech (youtube, ulozto atd.). Tuto aplikaci stačí mít spuštěnou na pozadí a ve webovém prohlížeči zkopírovat do schránky adresu nějakého multimédia. Bude-li se jednat o adresu podporovaného serveru (je jich mnoho a téměř denně vycházejí aktualizace), nabídne po chvilce hledání soubory ke stažení i v různých formátech (jedná-li se o audio/video). Aplikace si jistě zaslouží vaši pozornost.
JDownloader – počeštěný, velmi schopný
Firefox – s rozšířením AdBlock
Ve Firefoxu je rozšíření AdBlock velmi upovídané, což je dobře využitelná vlastnost. Rozšíření User-Agent Switcherumožní Firefoxu vydávat se za jiný prohlížeč i jinou platformu a používá se v kombinaci s FFmpeg frameworkem.
Pro plné využívání zmíněných rozšíření je někdy potřebné vymazat cache/historii Firefoxu, což může být ve vašem stávajícím systému nežádoucí. Proto zde zmiňuji vhodnější provoz ve Virtualboxu.
FFmpeg
Framework pro kódování a dekódování různých audio/video formátů. Je hojně využíván nejen přehrávači multimediálních souborů, ale i samotnými webovými prohlížeči. Aplikace použita v terminálu s informacemi získanými díky rozšíření User-Agent Switcherve Firefoxu.
Wireshark
Velmi silný nástroj pro monitorování – zachytávání síťové komunikace. Tímto nástrojem lze získat nejen adresu živého vysílání (většinou selhávají předchozí možnosti/kombinace), ale i celý záznam, pokud se jedná o jediný soubor.
Protože tento nástroj zachytává veškerou komunikaci na síťovém rozhraní, je vhodné používat jej ve Virtualboxu, kde bude zachycovat jen potřebný obsah (multimédium) a nebude soubor zbytečně narůstat při další webové komunikaci ve vašem stávajícím systému.
VLC
Výborný multimediální přehrávač se schopností streamovaný obsah nejen přehrávat a ukládat, ale i vysílat. Ohledně streamování pomocí VLC, lze na Linuxexpres nalézt několik článků.
Získání odkazu multimédia
Jelikož každý provozovatel serveru používá odlišné postupy pro přehrávání multimédií, lze tímto způsobem získat playlist s obsahem mnoha částí přehrávaného souboru, ale taktéž playlist, který odkazuje na další playlisty pro různou kvalitu multimédia. V lepším případě získáte odkaz na celý soubor multimédia.
JDownloader ponechávejte spuštěný na pozadí (pokud jej používáte), neboť někdy odchytí zpracovatelný odkaz.
1. varianta s Firefoxem
– vymažte cache prohlížeče v menu Historie>Vymazat nedávnou historii
– zásuvný modul Shockwave Flash na Nespouštět
– u rozšíření Adblock Zobrazit blokovatelné objekty
Vymazání veškeré historie prohlížeče
Nejprve zkuste do schránky zkopírovat adresu stránky s videem, zda-li jej neodchytí JDownloader.
V okně rozšíření Adblock se zaměřte na sloupec Typ. Prvek, který potřebujete je označen jako „zvuk a video“ nebo „subpožadavek“. Pokud se zde žádný takový prvek nenachází, klikněte na video pro jeho spuštění (nespustí se, ale u Adblock se objeví další prvky).
Je-li po znovu-načtení blokovaných prvků dostupný některý z výše jmenovaných prvků, klikněte na prvek pravým tl. myši a vyberte „Otevřít v novém panelu“. O správném prvku svědčí v novém panelu zobrazená výzva pro aktivaci pluginu přehrávače.
Otevření hledaného prvku v novém panelu
Opět vyzkoušejte v novém panelu zkopírovat adresu do schránky pro JDownloader.
Může se stát, že se neobjeví požadované prvky, nebo žádný z prvků vám v novém panelu nenabídne možnost aktivace pluginu přehrávače. Také se můžete setkat se stránkami „alergickými“ na AdBlock rozšíření. V takovém případě postupujte k variantě s Wiresharkem.
Získaný odkaz využijete pro stažení těmito způsoby (může fungovat pouze jediný):
1a. – terminál: wget
$ wget „adresa_multimedia“
Získáte-li playlist (většinou *.m3u8), který obsahuje části multimédia, je potřebné dále stáhnout jednotlivé části multimédia a poté je pospojovat. Nejjednodušší je vytvořit si na tyto záležitosti primitivní skript (bash, perl, lua atd.), podobný zde uvedenému.
-- VLKODLAK 2014 v0.1 -- -- LUA skript pro stazeni a spojeni streamovaneho videa ---------------------------------------------------------- -- adresa serveru streamu -- adresa musi koncit lomitkem web = "" -- soubor s playlistem -- neni-li ve stejnem adresari jako skript, musi byt -- uvedena absolutni cesta i nazev playlistu playlist = "" -- nazev vysledneho souboru soubor = "cele-video.ts" ---------------------------------------------------------- -- tabulka pro nazvy jednotlivych casti streamu stahuj = {} -- otevreni playlistu a ziskani nazvu streamu data = io.open(""..playlist) while true do info = data:read("*l") if info == nil then break end z,k,stream = string.find(info, "([%S%s]*)") if string.match(stream, "%S") ~= "#" then table.insert(stahuj, stream) end end data:close() -- stazeni vsech soucasti streamu for a = 1, #stahuj do os.execute("wget "..web..stahuj[tonumber(a)]) end -- tvorba a spojeni streamu do jednoho souboru os.execute("cp "..stahuj[1].." "..soubor) for b = 2, #stahuj do os.execute("cat "..stahuj[tonumber(b)].." >> "..soubor) end -- konec print(" >> HOTOVO <<") print(" Byl vytvořen soubor "..soubor.." ")
1b. – terminál: ffmpeg
Pomocí FFmpeg je možné stáhnout i multimédium, které je v playlistu rozděleno na mnoho částí. Parametrem -user-agent lze server „ošálit“ a vydávat se tak za jiné zařízení, než je váš Linux s Firefoxem.
Běžné použití:
$ ffmpeg -i "adresa_multimedia" -c copy vysledne_video.ts
Použití přístupu na server v „módu“ iPhone.
$ ffmpeg -user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile Safari/600.1.4" -i "adresa_multimedia" -c copy vysledne_video.ts
1c. – terminál: rtmpdump
Aplikace pro zachycení paketů vysílaných pomocí protokolu rtmp. Protokol se nejčastěji používá pro živé vysílání, ale je možné se s ním setkat i u distribuce běžného obsahu.
Uložení média:
$ rtmpdump -v -r "rtmp://adresa_multimedia" -o video.flv
Přehrávání média ve vlc:
$ rtmpdump -v -r "rtmp://adresa_multimedia" | vlc -
2. varianta s Wiresharkem
– ve Wiresharku spusťte zachytávání paketů na používaném síťovém rozhraní
(ve Virtualboxu to bude rozhraní eth0)
Ve webovém prohlížeči (nemusí to být Firefox) otevřete stránku s multimédiem o které máte zájem. Musíte posečkat než se začne přehrávat požadované médium (skončí reklamní blok). Po chvilce přehrávání ukončete zachytávání paketů ve Wiresharku.
Zachycené pakety ve Wiresharku
Než ukončíte i přehrávané médium ve webovém prohlížeči, je možné jednoduchým testem získat základní představu o následujícím způsobu zpracování. Test spočívá v pozastavení média v prohlížeči (toto nefunguje u živého vysílání – televize, rádia).
Načte-li se pouze malá část média, jedná se o vysílání pomocí playlistu, který je potřebné nalézt v zachycených paketech. Naopak u médií, které mají tendenci neustále se před-načítat, se jedná o jediný vysílaný soubor, kdy lze po nalezení odkazu (v zachycených paketech) stáhnout soubor aplikacemi wget, ffmpeg, rtmpdump.
2a. nalezení odkazu multimédia
Po zastavení zachytávání paketů nejprve zadejte do pole Filter: rtmp. Pokud se zobrazí jen několik paketů, nebo žádný, klikněte na Clear vedle pole Filter. V opačném případě přeskočte k popisu rtmp.
– společný začátek pro HTTP i RTMP
Vyberte z menu Statistics>Conversation List>TCP (IPv4 &IPv6).
Seřaďte si pakety podle množství a po označení řádku s největším množstvím paketů klikněte na Follow Stream (někdy mohou být pakety rozházeny po sousedních IP adresách, proto nemusí být vždy nejpočetnější řádek ten, který potřebujete – tzn. sledujte i sousední IP adresy).
Conversation List
- HTTP
V novém okně vás bude zajímat zejména červeně zbarvený text. Zaměřte se na řádky označené GET a Host.
Příklad (nefunkční, jen pro názornost):
GET /vid/21606cc8e73135073979ae4/27937463d35d0bb8265d_sd.flv?start=0 HTTP/1.1
Host: tv.stream.tv:8080
Výsledná adresa:
http:// tv.stream.tv:8080/vid/21606cc8e73135073979ae4/27937463d35d0bb8265d_sd.flv?start=0
Takovouto adresu již lze použít v terminálu podle varianty 1a a 1b.
- RTMP
Oproti předchozímu (http) příkladu, nejprve klikněte na tlačítko Hledat. Do pole zadejte rtmp a nechejte vyhledat.
Zkopírujte si vše od rtmp:// až po tečky (posledním znakem by mělo být lomítko)
Do pole pro vyhledání nyní zadejte play a opět zkopírujte až po sekvenci několika teček.
Příklad (nefunkční, jen pro názornost):
- vyhledáno rtmp
tcUrl..(rtmp://tv-service.cd.cz/vod/..fpad....capabilit
- vyhledáno play
play............pmp4:1566093.mp4?SIGV=2&IS=0&ET=1453287771&CIP=37.48.37.228&KO=1&US=833d18b8915c85d9a3epac............73
Výsledná adresa:
rtmp://tv-service.cd.cz/vod/ pmp4:1566093.mp4?SIGV=2&IS=0&ET=1453287771&CIP=37.48.37.228&KO=1&US=833d18b8915c85d9a3epac
Získanou adresu je možné použít s rtmpdump podle varianty 1c.
2b. stažení celého multimédia
Možnost stáhnout celé médium je lehce dostupné pouze v případě, že se jedná o http komunikaci a obsah není pod DRM ochranou (např. pomocí Silverlight, nebo HTML5). S https a rtmp komunikací toto nefunguje.
Předpokladem je, že ponecháte video ve webovém prohlížeči běžet až do konce (postačí když jej necháte načíst do konce – poznáte dle časové osy) a Wireshark bude celou dobu zachytávat pakety. Po dokončení zachytávání paketů (u názvu rozhraní v záhlaví okna se objeví hvězdička), vyberte z
menu File>Export Objects>HTTP.
V novém okně vyberte Save All a zadejte název adresáře. V tomto adresáři poté naleznete obrázky, texty, celé multimédium, nebo části multimédia, které je potřebné pospojovat (playlist vs. celý soubor).
Závěr
Každý provozovatel serveru poskytující multimediální obsah, si chrání příjmem z tohoto obsahu plynoucí. Není proto zárukou, že vám uvedené postupy budou fungovat za týden, i když vám včera fungovaly. Toto je například důvod, proč má JDownloader téměř každodenní aktualizace (vzhledem k množství podporovaných serverů).
u spousty webu staci pouzit youtube-dl, neni treba se timhle zabyvat
Přesně tak, a pro služby, které v youtube-dl nejsou podporovány, je poměrně jednoduché podporu přidat. Výhodou je, že následné použití je pak v podstatě bezpracné. Navíc jsou na všechno testy a autoři upstreamu jsou velmi ochotni a schopni opravovat i podporu pro video servery, které pro ně samotné nemohou být zajímavé.
Take Netvideohunter a Youtube center (pokud zrovna funguje).
A stim rtmpdump to nemusi byt az tak jednouche. Oni totiz sulini casto pouzivaji vlastni prehravac, ktery ma desifrovaci klic a data do nej lezou sifrovane. Rtmpdumpu se pak musi i sdelit, kde je ten prehravac, protoze jinak clovek ziska leda smeti.
Takze o rtmp bych doporucil nastudovat http://pclosmag.com/html/Issues/201104/page19.html . Parametry tam ziskavaji pomoci rtmpsuck. Lze pouzit i rtmpsrv, zalezi na tom, jak se komu dari z vystupu jednoho ci druheho desifrovat parametry. Ja skoncil u rtmpsrv, rtmpsuck mi nejak nedaval zadane vysledky.
Ovsem ani s vyse uvedenymi nemusi mit clovek vyhrano, proste potfora nejde a nejde a je potreba rtmpdumpu predat dalsi parametry, k jejichz zjisteni neni k dispozici zadny nastroj a nezbyva, nez zkouset, coz je dost k po..... Nastesti to obcas nekdy nekdo uz udelal a clovek na to padne na Googlu.
Najjednoduchšie je (keď už som na danej stránke) je prepísať url na online download službu. Napr. pre video na http://youtube.com/... Upraviť adresu stačí dvoma písmenkami na http://ssyoutube.com/... Funguje aj z mobilu, aj keď tam sa mi posledných pár týždňov mrší koniec adresy.
Je opravdu potřeba rtmpdump? Já mám pocit, že ffmpeg, zvládne rtmp taky už.
Jo, zvlada, a nejen ffmpeg, ale i mplayer :)
ffmpeg -i rtmp://stream.url/address -acodec copy -vcodec copy "$TARGET_FILE"
mplayer -dumpstream rtmp://stream.url/address #uklada do souboru ./stream.dump
Varovani: do gulase se smi nakrajet pouze zakonem povolene suroviny. Tento recept ma slouzit pouze k edukativnim ucelum.
Opravdu jsou dnes takove kydy nutne?
Navíc to není pravda, alespoň u nás v ČR, kde je dle platné legislativy stahování multimediálního obsahu pro osobní potřebu z jakéhokoliv zdroje zcela legální a každý, kdo si koupí jakékoliv zařízení nebo médium, které je možné využít _pro uložení/uložit na něj_ rozmnoženinu, automaticky připlácí drobnou částku, která pokrývá část autorských poplatků.
Tak "piratsky poplatek" se plati snad v cele Evrope, nejen v CR. Krome toho na Linuxu je Flash tak strasny, ze stahnout a prehrat v necem jinem je jedine rozumne reseni.
Proč je poslední dobou moderní vyjadřovat se ke všemu, bez jakékoliv informativní hodnoty?
Ale máte pravdu. To varování je tam zbytečné, protože jej mohou číst pouze lidé v ČR a ani v budoucnu se situace ohledně autorského práva určitě nezmění (tou dobou již tento blog jistě nebude existovat).
Je-li tam totiž to varování = článek nenabádá k možnému porušování práv
Ja nevim, co je moderni, ja se proste podivuju nad tim, proc ma autor potrebu davat nejaky disclaimer. Docela by me zajimalo, jestli to ma nejak pravnicky podlozene, nebo jenom neco takoveho videl na nejakem americkem webu, tak to tam taky napsal.
Dost me vytaci, kdyz si lidi nemuzou proste vymenovat informace a musi mezitim odrikavat nejake ritualy "nic nezarucuju", "me umysly jsou ciste" a podobne.
Možná stačilo prosté zeptání, zda-li je to varování nutné a nevměšovat do příspěvku 'guláš'.
Nevím jak vy, ale já si již dávno přečetl ACTA (komplet), autorský zákon(částečně -tuším § 5,11,30,40), TTIP (částečně) a protože nemám právnické vzdělání, ale pouze selský rozum, není lepší uvést krátké varování o 'možnosti' něco porušovat a vyhnout se tak 'možným' současným nebo i budoucím potížím?
Pokud se tedy zamyslím a uvedu příklady:
Provozovatel do svého výtvoru vkládá každých 10 minut blok reklam. Použiju-li tento návod a video stáhnu bez reklam.
= Nezasahuji do je autorských práv, neboť pozměňuji jeho výsledek?
Provozovatel vás při první návštěvě své multimediální kartotéky nechá odsouhlasit nějaké ujednání (čtete veškérá ujednání?). Použiju-li tento návod a obejdu tak jisté mechanismy.
= Neporušuji nějakou dohodu / zákon?
Provozovatel nemá zastoupení v ČR.
= ???
Na závěr bych rád taktéž podotkl, že i mě vadí, když si lidi nemohou prostě vyměňovat informace. Omlouvám se, pokud vás to irituje, ale já raději budu chránit svoji zadnici, než abych v budoucnu měl potíže, nebo mazal či upravoval zápisky, návody, články na internetu (a že jich není málo).
Chraneni zadnice chapu, ale pripada mi trochu paranoidni. A pokud mne neco pripada trochu paranoidni, vetsinou je to znacne paranoidni. Pokud se zde prosadi nejake humusy ve stylu DMCA (v takovem pripade zarucuju svou okamzitou emigraci :)) a nekomu se znelibi ten clanek, bude pravdepodobne zkontaktovan root.cz, ktery ho upravi ci smaze.
To bude podobné jak s těmi kecy, že weby používají cookies. Taky je to úplně k ničemu, lidi to akorát otravuje, ale darmožrouty v EUřadech to uspokojilo.
Jo, to byly casy. Tehdy jste BlueRay stahoval take mesic a kdyz to na 90% padlo, mohl jste zacit znovu. Ale te radosti, kdyz se to pak povedlo!
U toho Firefoxu by nemelo byt nutne pouzivat VM jen kvuli nastaveni. Staci si udelat novy profil (firefox -ProfileManager) ktery bude mit zakladni nastaveni, vcetne povolenych/nainstalovanych rozsireni, cookies, cache a podobne.
Muzete mit take pustene vice firefoxu pod ruznymi profily, napr. "firefox -P video -no-remote" vam pusti dalsi nezavislou instanci ff (-no-remote) s profilem video (-P video).
Děkuji za hodnotný příspěvek. Rozhodně poučné. Alespoň pro mě.
Ten Virtualbox je míněn pro běžné uživatele, ale především je vhodný při zachytávání pomocí Wiresharku.
FlashGot. Na liště se mi rozbliká ikonka, pravoklikem otevře nabídka se vším co na stránce chytil a rovnou můžu stahovat. Po zapnutí HTTP autentifikace není problém třeba stahovat soubory z uložto přes curl :)
Ja osobne mohu ze zkusenosti vrele doporucit YTD od pepak.net , skvelej program sice po woknama, ale zcela bez problemu funguje i pod linuxem ve wine
Presne tak. YTD funguje napriklad aj na RTVS, kde ani dlhelper ani ostatne pluginy nic neregistruju :)
Pouzivam pod wine.
Uměl by někdo poradit, jak stáhnout videa ze slovenské RTVS, například něco takového: https://www.rtvs.sk/televizia/archiv/9982/56471 ? Totiž je to stream, ale streamují se nasekané kousky a vždycky když se jeden kousek dostreamuje, tak naskočí další a streamuje se dál. Postahovat a pospojovat všechny ty kousky není moc praktické.
Doporučuji použít buď Youtube-dl nebo pohodlnější variantu online dostupné servery na stahování videa například české Savido, které podporuje velké množství video serverů. Třeba zrovna ten Váš bude mezi podporovanými. Zkuste na www.savido.cz
Pro přehrávání webových videí mplayerem ( maje slabé CPU i VGA ):
používám:
Firefox ( teď už tedy PaleMoon ) + DownloadHelper + mplayer
+ bash script, který ve smyčce kontroluje, zda se nezměnil clipboard a přehraje ho:
while true; do
odkaz=`xclip -out -selection clipboard`
if [ "${odkaz}" != "${old}" ]; then
mplayer `youtube-dl -g "${odkaz}"`
old=${odkaz}
sleep 1
done
ve FF pak stačí na videu "Kopírovat adresu odkazu",
případně Kopírovat adresu v DownloadHelperu, pokud je to flash nepodporovaný youtube-dl