Scaricare i contenuti audio e video presenti nelle pagine web — Guida completa

Premessa: ho impiegato mesi per lavorare a questo articolo, rivedendo in continuazione le idee di cui parlare e valutando come dare i consigli nel modo migliore possibile. Questo post racchiude quindi numerose informazioni e potrebbe richiedere più di una lettura per assimilarle tutte.

Ormai 6 anni fa avevo scritto un articolo che continua ad essere tra i più visitati del blog, dedicato a salvare i video incorporati nei siti web in cui ci imbattiamo navigando in rete. Non era una guida dedicata ad atti deplorevoli di pirateria cinematografica (non insegna a scaricare film da reti P2P) bensì era rivolta proprio ai video che sono “dentro” le pagine. Un esempio banale di sito con video può essere Youtube, ma in realtà ce ne sono moltissimi che per un motivo o per l’altro offrono dei filmati (ad esempio siti di news, recensioni di hardware, eccetera) ed essi sono inseriti nei formati e nei modi più disparati.

Al tempo avevo dedicato quasi tutta la guida all’uso di Unplug, un’estensione per Firefox che era tra le migliori per questo tipo di compito. In seguito è stata sorpassata da altri strumenti, per poi migliorare di nuovo nell’ultimo periodo. Lo scopo di questo mio nuovo articolo vuole essere più ad ampio raggio: vorrei cercare di spiegare quale approccio usare quando ci si trova di fronte a un sito con video: a partire da come riconoscere la tecnologia utilizzata, fino al salvataggio vero e proprio del contenuto multimediale. Accennerò anche qualcosa riguardo alla conversione.

Devo precisare subito che per quanto cercherò di essere chiaro e spiegare le cose in modo semplice, inevitabilmente alcuni dei concetti qui spiegati potrebbero non essere banali. In alcune circostanze sarà necessario “esplorare” del codice HTML, XML o Javascript (non è comunque necessario conoscere questi linguaggi). Inoltre dovrebbe essere chiara la differenza tra un file e uno stream. Oltre a questo va aggiunto che nell’articolo mi concentrerò sui video, ma i concetti sono tali e quali anche per delle eventuali tracce audio ascoltabili online.

Software necessari

Prima di addentrarmi nelle tecniche dettagliate per operare in più circostanze possibili, credo sia meglio fornirvi alcune indicazioni sugli strumenti che vi serviranno. Non sempre serve installare “tutte” queste cose, tuttavia se pensate di usare le istruzioni di questo articolo più di una volta ogni tanto, installate tutto e sarete sempre tranquilli. Meglio arrivare preparati senza dover ricontrollare ogni volta se avete lo strumento adatto.

Ci sono essenzialmente quattro tipi di strumenti che possono tornare utili:

  • un estrattore di link
  • un riproduttore multimediale
  • alcuni registratori di flussi audio/video
  • un convertitore (opzionale, dipende da dove vogliamo riprodurre i video)

Per ciascun punto vi spiego ora di che cosa si tratta e vi consiglio cosa installare. Nella maggior parte dei casi cerco di indicarvi un software libero e open source, nonché multipiattaforma in modo che il procedimento sia uguale per tutti. Quando non è possibile tento di fornire delle possibili alternative e indico i sistemi operativi con le icone Fugue. In nessun caso comunque vi “costringo” a usare software commerciale, perché non c’è bisogno.

Note importanti

I software indicati sono dei consigli, dati dal fatto che io personalmente li uso o li considero validi. Siete liberi di usare altre applicazioni a vostra scelta. Inoltre, vi chiedo gentilmente di integrare il materiale qui presente con una vostra ricerca personale online se volete salvare video da certi siti e non ci riuscite.

Non usate i commenti al post (né il mio indirizzo email) per incollare un URL di un video e chiedermi “scaricamelo e inviamelo per email”, al massimo posso dare qualche consiglio ma non posso lavorare a tempo pieno come “registratore di video altrui”. 😉 Nella maggior parte dei casi, è già scritto tutto qui. 🙂

Estrattore di link

Il processo di download di video da un sito si può riassumere in pochi passaggi: si apre la pagina, si valuta che tipo di media è, si trova il link, si scarica. Tutto ciò può essere ovviamente fatto a mano, ma fortunatamente per molti casi — diciamo pure la quasi totalità — si può usare uno strumento che trovi il link per noi, così poi ci possiamo concentrare sul resto.

Il “come” lo vediamo poi nel dettaglio, per ora vi basti sapere che l’accessorio più comodo da avere nel proprio arsenale è un’estensione per il browser. Nello specifico di questo post, io uso Mozilla Firefox e nel seguito farò riferimento sempre a questo browser. Come estensione utilizzo Video DownloadHelper, che a mio avviso è la più comoda. Dato che potete installarli su tutti i sistemi operativi, vi consiglio di farlo. Non sono riuscito a trovare qualcosa di altrettanto versatile per altri browser.

Mozilla Firefox

Video DownloadHelper

Riproduttore multimediale

Ovviamente si suppone che dopo aver scaricato i video vogliate anche guardarli. Sebbene ci siano alcune scelte più popolari (ad esempio il contenitore MP4), ogni sito web può avere video nei formati e coi codec più disparati. Per evitare qualsiasi problema è buona cosa dotarsi di un programma che potremmo definire “universale”. VLC è imbattile in questo, consentendovi di leggere tutti i formati video e audio. Probabilmente lo avrete anche già installato.

VLC media player

Registratori di flussi

Quando si individua l’URL di un video, ci possono essere due casi: si tratta del link a un semplice file, il che significa che basta scaricarlo, oppure è un riferimento ad uno stream. Lo stream è un flusso di dati audio/video che deve essere registrato, in modo (concettualmente) simile a quanto si fa con la televisione, per capirci.

Per queste occasioni è utile poter salvare gli stream di tipo MMS e RTSP (con varianti RTSPE e altre). Per il primo caso, servirà un software a linea di comando chiamato Mplayer. Su Linux si installa dal gestore di pacchetti, mentre in Windows bisogna scaricare l’archivio e scompattarlo in una cartella a piacere (non di sistema, Desktop o Documenti vanno bene). Per Mac ci sono varie versioni, quella che vi consiglio è indicata sotto.

Mplayer

MplayerX

Anche per quanto riguarda RTMP useremo un software dedicato a linea di comando. Pure in questo caso vale quanto detto sopra per Linux, per Windows vi consiglio di usare esclusivamente la versione 2.3 linkata sotto (sempre da scompattare in una cartella non di sistema). Per installarlo su Mac dovrete utilizzare MacPorts, una raccolta di programmi per Linux mantenuti in versione per Mac. Sotto vi indico una guida per come fare (io non uso Mac quindi non posso aiutarvi in questo).

rtmpdump

rtmpdump 2.3

Guida per MacPorts

Oltre a questi tipi di flussi, esiste anche una nuova tecnologia particolarmente odiosa, non tanto per il fatto che sia stata sviluppata da Microsoft, quanto per il fatto che è abbastanza difficile da scaricare. Sto parlando del cosiddetto Smooth Streaming. Si tratta di un tipo di stream comunemente usato nei siti che utilizzano Silverlight, una tecnologia sostanzialmente morta prima di nascere ma che purtroppo viene usata su alcuni siti importanti, come quelli di Rai e Mediaset.

Su questo approfondirò in seguito. Per ora vi basti sapere che esiste un solo programma freeware per Windows che consente di scaricare questi flussi, ISMdownloader. Fortunatamente, essendo un software a riga di comando, è possibile farlo funzionare anche su Linux e Mac e a questo proposito ho scritto degli articoli dettagliati e semplici da seguire. Qui trovate dei riferimenti per installarlo e usarlo:

Scaricare video Smooth Streaming con Linux

Usare ISMDownloader su Windows

Scaricare video Smooth Streaming con Mac OS X

Convertitore

Come vi dicevo, VLC vi permette di riprodurre qualsiasi tipo di audio o video sul vostro computer. Tuttavia potreste voler guardare i vostri video su qualche dispositivo mobile, come ad esempio telefoni o tablet con Android oppure iOS, o ancora i classici lettori multimediali da salotto. Solitamente tutti questi dispositivi accettano di buon grado i video in formato MP4, ed è per questo che vi consiglio HandBrake. Certo, se desiderate un sacco di opzioni avanzate ci sono WinFF e ffmpegX, ma per conversioni semplici e senza decine di opzioni HandBrake va benissimo.

HandBrake

Con questo si conclude la carrellata degli strumenti consigliati. Di seguito vi spiego come procedere in pratica nell’individuare il video e poi salvarlo.

Individuare il tipo di media

La prima cosa fondamentale è capire con cosa si ha a che fare. Ci possono essere diverse possibilità, ad esempio possiamo trovare:

  • video in formato Flash (diffusissimi)
  • embed di semplici file (meno diffusi ma facili da gestire)
  • stream MMS
  • stream RTMP (questi ultimi anche “inseriti” dentro ai file in formato Flash)
  • video in formato Silverlight (che magari alle volte richiamano stream MMS, ma solitamente hanno dei video Smooth Streaming)

Non escludo che ci possano essere altre cose, come l’odioso RTSP, ma per esperienza posso dire che nella maggior parte dei casi basta saper operare con quanto ho indicato sopra.

Video in Flash

I video in formato Flash sono facili da distinguere: sono estremamente diffusi e ci si accorge subito che usano tale tecnologia usando il tasto destro del mouse. Per esempio, provate a cliccare col destro su questo mio video su Youtube: comparirà un menu, la cui ultima voce dice qualcosa di simile a Informazioni su Adobe Flash Player quindi il video viene fornito usando Flash.

A questo punto ci possiamo trovare di fronte a tre situazioni assai comuni: il player è di un sito famoso (ad esempio Youtube, Dailymotion, Vimeo, …), oppure contiene un link ad un semplice file video o infine un link ad uno stream in formato RTMP.

Sito famoso o semplice file

Indirizzo diretto ad un file video trovato da Video DownloadHelper

Aprite la pagina desiderata e premete play. Se quando il video si avvia l’icona di Video DownloadHelper comincia a lampeggiare, e cliccando la freccina a fianco vedete il collegamento al video che vi interessa (come in figura), allora ricadete in questo caso. Ed è semplicissimo!

Vi basterà cliccare il link affinché Firefox vi chieda dove volete salvare il file, e nel caso di siti come Youtube solitamente potrete anche scegliere tra diverse qualità. Per provare, potete fare una prova di download di un video da Youtube oppure il video che ho usato in questo esempio.

Per i siti “famosi” ci sono diversi altri software, come ad esempio movgrab, youtube-dl, JDownloader (il cui plugin per Mediaset è parzialmente basato su codice scritto da me) e get-flash-videos. Ho anche scritto un articolo su come registrare i video da BBC iPlayer.

Stream in formato RTMP

Se Video DownloadHelper non dà segni di vita o gli unici file che elenca non sono attinenti, è probabile che il video con cui avete a che fare ricada nella categoria degli stream RTMP. In questo paragrafo userò come esempio questa pagina web e vi mostrerò come individuare l’URL dello stream.

Innanzitutto, è opportuno leggere un pezzo del codice sorgente della pagina. Questa tecnica è un pochino più avanzata e si può usare anche in casi diversi dai flussi RTMP, per capire come comportarsi, quindi è molto utile da conoscere.

Il codice sorgente è una serie di informazioni e metadati che descrivono il contenuto della pagina. Solitamente è scritto usando il linguaggio HTML e altri linguaggi come ad esempio Javascript. Per visualizzare il codice della pagina che vi interessa, apritela e poi premete Ctrl+U, si aprirà una finestra con il codice. Potete fare delle ricerche usando Ctrl+F e scrivendo la parola che vi interessa. Parole che vale la pena cercare sono:

  • embed
  • video
  • player
  • object
  • flashvars
  • rtmp
  • mp4

Eccetera, usate un po’ la fantasia e guardatevi intorno. 😛 Nella pagina di esempio, una ricerca della parola embed permette rapidamente di trovare questo pezzo di codice Javascript che sembra fare al caso nostro:

var flashvars = {
single: "true",
embedPlayer: "",
source: "/common/bitneg/events/VisualizationVirtualWorkshop2013/General-Visualization-Quick-Start.smil",
introImage: "/common/video-images/broadcast/generalvisualization_quickstart_intro.png",
exitImage: "",
configXML: "",
Reset_at_End: "False",
Width: "1024",
Height: "768",
Length: "19:40",
Direct_Link: "http://www.wolfram.com/broadcast/video.php?channel=317&video=1452",
Embed_code: "",
Content_Type: "Training",
caption: ""
};

Non esiste una “regola universale” in questi casi, ma a colpo d’occhio sembra proprio che quell’indirizzo nella variabile source sia interessante. Proviamo a seguire l’indirizzo completo:

http://www.wolfram.com/common/bitneg/events/VisualizationVirtualWorkshop2013/General-Visualization-Quick-Start.smil

Clicchiamo col destro e salviamo il file col nome. Aprendolo come se fosse un normale file di testo, troviamo all’interno il seguente contenuto:

<smil>
<head>
<meta base="rtmp://streamingmedia.wolfram.com/ondemand" />
</head>
<body>
<switch>
<video src="broadcast/events/VisualizationVirtualWorkshop2013/generalvisualization_quickstart_500" system-bitrate="500000"/>
<video src="broadcast/events/VisualizationVirtualWorkshop2013/generalvisualization_quickstart_1100" system-bitrate="1100000"/>
</switch>
</body>
</smil>

Perfetto, abbiamo trovato uno stream RTMP, anzi due!

Ricapitolando, partendo dal codice della pagina è venuto fuori che le informazioni sul video sono contenute in un file esterno (in questo caso in formato SMIL). Una volta ispezionato il file, troviamo due possibili qualità per il video, di cui noi prendiamo quella più alta. L’indirizzo del video è spezzato in due, ma possiamo facilmente ricomporlo ottenendo:

rtmp://streamingmedia.wolfram.com/ondemand/broadcast/events/VisualizationVirtualWorkshop2013/generalvisualization_quickstart_1100

Aprendolo con VLC si vede, quindi l’URL è giusto. Più avanti nell’articolo spiego come salvare gli URL ottenuti. Ovviamente ogni sito è diverso, ma questo lo trovo un ottimo esempio perché spiega l’idea di base: guardando nel codice e cercando un po’ si può trovare direttamente un URL, oppure un file di informazioni sul video che contiene poi l’URL.

Embed di semplici file, stream MMS oppure stream RTMP

Alcuni siti web utilizzano un metodo di incorporamento che ultimamente non è più molto “di moda” ma che funziona: inserire direttamente nella pagina il filmato desiderato, che può essere un file o uno stream, senza usare Flash. I video vengono riprodotti con vari plugin, ad esempio Windows Media Player o QuickTime (o i relativi equivalenti su piattaforma Linux).

Questa scelta consente di scaricare i video in modo relativamente semplice. Se sono semplici file video, in genere ci pensa Video DownloadHelper. In caso contrario, ci basta aprire il codice della pagina e leggere direttamente il pezzo di codice del video, contenuto in un tag embed oppure object, mentre le pagine più recenti usano il tag video.

Per questo esempio, userò questa pagina e gli strumenti di sviluppo integrati in Firefox. Basta premere F12 (o Ctrl/Cmd+I a seconda del sistema operativo) per aprire il pannello con le varie schede. La prima sezione ci consente di esplorare il codice della pagina in modo interattivo. Torna utile perché alcuni siti modificano il proprio codice dopo aver caricato la pagina, e quindi a volte premere Ctrl+U non aiuta.

Con gli strumenti di sviluppo possiamo esplorare il codice come in figura:

firefox_devtools
Esplorazione del codice con gli strumenti di sviluppo del browser

La cosa più pratica da fare è usare la freccina in alto a sinistra sulla barra. Dopo aver premuto l’icona della freccia, cliccate sulla parte di pagina che vi interessa (cioè il video o qualcosa nelle immediate vicinanze). A questo punto cominciate ad esplorare i nodi. È quello che ho fatto io nella figura.

In questo caso tra i parametri vediamo il nome del file videofilename.wmv che ci permette di ottenere l’indirizzo completo:

http://www.mediacollege.com/video/format/windows-media/streaming/videofilename.wmv

Con un metodo analogo si possono scoprire gli indirizzi di eventuali flussi MMS o RTMP inseriti nelle pagine con lo stesso meccanismo.

Video in formato Silverlight

Alcuni siti web (per fortuna pochi) usano i video inseriti in formato Smooth Streaming con tecnologia Silverlight. Smooth Streaming è un meccanismo di flusso “adattivo” inventato da Microsoft, che consente al sito internet di trasmettere a diverse qualità a seconda della connessione di chi lo visita.

Questo rende il download un po’ più complicato. Fortunatamente, per i due siti web italiani principali che fanno un uso smodato del plugin Silverlight, potete usare i miei script che lo bypassano:

Per altri siti, la cosa che bisogna fare è individuare il cosiddetto file Manifest. Un esempio di questo tipo di video si può trovare qui e visualizzando il codice della pagina si riesce a individuare la posizione:

<MediaSource>To_The_Limit_720.ism%5CManifest</MediaSource>

Da questa si ricava l’indirizzo completo (quel %5C è una semplice barra rovesciata codificata con percent-encoding):

http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest

Su alcune pagine non è così facile individuare il Manifest, per fortuna comunque Silverlight non ha mai preso moltissimo piede e ora non viene più sviluppato.

Analisi della richieste HTTP

Su siti web un po’ “difficili” può essere utile visualizzare i dati che vengono trasmessi nella comunicazione tra il browser e il sito web che ci interessa. Questi dati si chiamano richieste HTTP, e gli strumenti di sviluppo ci permettono di visualizzarle nella scheda Rete.

Tramite l’ispezione delle richieste è possibile visualizzare esattamente quali file vengono richiamati dal browser o dai plugin, quali ad esempio Flash Player. Per attuare questa tecnica, andate sulla pagina che vi interessa, aprite gli strumenti di sviluppo, passate alla scheda Rete e poi ricaricate la pagina. Questo è importante per vedere tutto quanto.

Un esempio di richieste visualizzate su questo video del sito di La7:

firefox_net
Visualizzazione delle richieste HTTP

Tra le numerose richieste potreste individuare link di file video, frammenti di clip oppure file di configurazione che potrebbero permettervi di risalire all’URL necessario al download. Nella figura, ho evidenziato l’URL di un file M3U8 che mi dà alcune informazioni su dove si trova il video.

Tali informazioni mi sono state utili, assieme ad altre analisi, per sviluppare il mio script per scaricare i video da La7. Questo tipo di approccio è da considerarsi più avanzato: chi lo applica deve farsi strada tra le informazioni disponibili e con intuito e pazienza cercare di risalire al video. Insomma, richiede di fare un po’ di pratica ma dà spesso buoni risultati.

In particolare, andremo a cercare/filtrare (con la casellina apposita):

  • .mp4, .wmv o estensioni simili per video interi
  • .m3u8 per flussi di questo tipo
  • xml o json per file di configurazione che contengono dati utili sul video

Se vi trovate di fronte a un flusso F4M in un player Flash (con pezzettini di video F4F, a volte), è inutile intestardirsi a tentare di registrarlo così. Quasi sempre si può aggirare l’ostacolo col metodo più pratico del cambio dello user-agent. Vedete soprattutto la sezione in fondo al post.

Scaricare i video dagli URL individuati

Una volta individuato l’URL di un video, è necessario provvedere al download.

Nel caso di link ad un normale file, potete scaricare il video copiando l’URL nella barra di navigazione del browser e poi premendo Invio. A quel punto parte la richiesta di download o la riproduzione del video, in tal caso fate File » Salva con nome. Ci sono anche vari programmi chiamati download manager che permettono di avviare in modo semplice lo scaricamento di un file, dato l’URL.

Per gli stream di tipo MMS (o eventualmente RTSP), potete predisporre una linea di comando di questo tipo:

mplayer -dumpstream -dumpfile output.wmv [URL]

Dove [URL] è l’indirizzo dello stream MMS. Se usate uno stream RTSP potrebbe essere più conveniente usare MP4 come estensione al posto di WMV, comunque dipende dal tipo di codifica del flusso originale.

Con Linux e Mac, vi basta usare la riga di comando nel terminale. Su Mac dovrete indicare il percorso completo al binario, per esempio /Applications/MPlayerX.app/Contents/ Resources/binaries/x86_64/mplayer [...], adattate la riga di comando al vostro caso specifico.

Su Windows, dovrete copiare la riga di comando in un file chiamato download.bat e salvare questo file nella stessa cartella dove avrete precedentemente scaricato il file mplayer.exe. A questo punto vi basta fare doppio click sul file download.bat appena creato.

Download di un flusso MMS con Mplayer
Download di un flusso MMS con Mplayer

Per gli stream RTMP, il procedimento è del tutto analogo, solo che si usa rtmpdump. Riprendendo l’esempio di prima, possiamo formare la linea di comando così:

rtmpdump -R -o output.mp4 -r rtmp://streamingmedia.wolfram.com/ondemand/broadcast/events/VisualizationVirtualWorkshop2013/generalvisualization_quickstart_1100

L’opzione -R serve a non far “correre” troppo il programma, perché su alcuni siti questo crea problemi nella registrazione. Se provate senza, sarà più rapido ma potrebbe fallire in alcuni casi.

Anche in questo caso, se usate Windows dovete creare il file batch (come con Mplayer) ma stavolta salvarlo nella stessa cartella di rtmpdump.exe. Ne avevo parlato anche in questo mio articolo.

Infine, per i video in Smooth Streaming, vi rimando alle guide linkate all’inizio del post.

Cambio dello user-agent

La tecnica descritta in questo paragrafo è stata aggiunta all’articolo in data 24/05/2014.

Con l’enorme diffusione di dispositivi quali smartphone e tablet, negli ultimi anni la maggior parte dei siti che contengono video come contenuto principale ha visto una trasformazione. Accanto alla normale versione per computer, questi portali hanno creato una versione ottimizzata per sistemi Android e iOS.

Può succedere quindi che su una pagina che usa protezioni complicate o flussi strani, il download diventi semplice quando si accede alla versione per dispositivi mobili, in quanto non sono presenti né Flash né Silverlight.

I siti web utilizzano una stringa particolare per riconoscere il browser dell’utente, chiamata user-agent string. Per esempio, quella del mio browser è:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36

Chiaramente è il nostro browser a inviare questa informazione, quindi la possiamo modificare a nostro piacimento. Come esempio di uso di questa tecnica potete provare a salvare questo video. Chiaramente, come dicevo esistono strumenti per salvare video da Youtube in modo automatico, ma è solo un esempio per illustrarvi la tecnica. 😉

Scaricate l’estensione User Agent Switcher per Firefox e installatela. A questo punto, dovete andare nelle preferenze dell’estensione e aggiungere una stringa per un dispositivo mobile, per esempio quella di un iPad:

Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10**

Alcuni siti rimandano alla loro app se provate a usare una stringa di un dispositivo Apple. In tal caso, potete anche usare una stringa di un dispositivo Android, come ad esempio:

Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19

Lasciate vuoti gli altri campi (App Code Name, App Name, eccetera). Fatto ciò, potete attivare l’utilizzo di questa user-agent string sempre dal menu dell’estensione.

A questo punto disattivate Flash player dalle preferenze di Firefox. È molto importante che il sito pensi che il vostro PC non abbia la possibilità di riprodurre contenuti in Flash.

Aprite la pagina del video e dovreste vedere la versione mobile del sito. Se  compare un pulsante Play per far partire il video, premetelo anche se sembra non funzionare.

A questo punto potete usare una delle altre tecniche descritte in questo articolo (in particolare l’uso degli strumenti di sviluppo) per trovare il link al video. Nella maggior parte dei casi si trovano file in formato MP4 direttamente scaricabili (in un elemento <video> con src che indica il file). In alcuni siti invece ci sono dei link a degli stream riconoscibili dall’estensione M3U8.

Download dei flussi M3U8

Questi flussi generalmente sono registrabili con la funzione di registrazione di VLC. In alternativa, se non funzionano con VLC, potete procedere con un tool a linea di comando in modo identico a quanto visto con rtmpdump oppure mplayer.

Metodo classico

Il download dei flussi M3U8 è possibile grazie a un programma che si chiama ffmpeg. Lo potete scaricare dal sito ufficiale. Ecco un esempio:

ffmpeg -i "[...].m3u8" -acodec copy -vcodec copy output.mp4

Alcuni flussi M3U8 hanno l’audio malformato e ffmpeg potrebbe interrompersi con un errore che vi avvisa, senza però registrare nulla:

[mp4 @ 0x9a6820] Malformed AAC bitstream detected: use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg)

Traduzione:

Bitstream AAC [che sarebbe l’audio] malformato, usare il filtro bitstream per l’audio aac_adtstoasc per ripararlo (l’opzione -bsf:a aac_adtstoasc con ffmpeg)

Quindi il programma vi sta già dicendo cosa cambiare. 🙂 In questo caso, dovete aggiungere l’opzione specificata e ottenere una riga di comando di questo tipo:

ffmpeg -i "[...].m3u8" -acodec copy -vcodec copy -bsf:a aac_adtstoasc output.mp4

Le versioni più recenti del programma lo fanno in automatico.

Metodo “pigro”

Per chi non ha voglia di digitare ogni volta la riga di comando completa per ffmpeg, c’è un altro sistema molto pratico per registrare questi flussi. Se avete installato correttamente youtube-dl e ffmpeg (servono entrambi) si può passare l’URL direttamente a youtube-dl:

youtube-dl "[...].m3u8" -o output.mp4

Il parametro col nome del file risultante è opzionale, ma a volte serve per evitare errori con i nomi di file troppo lunghi.

Conclusione

Salvare i video presenti sulle pagina web è in genere un’operazione rapida quando si tratta di siti “famosi”, in quanto esistono numerosi programmi già pronti che rendono il lavoro molto facile.

La situazione è diversa in altre circostanze, alcuni siti internet rendono l’operazione meno “immediata” e richiedono di analizzare la pagina che abbiamo di fronte. Lo scopo di questo articolo è quello di cercare di spiegare come sviluppare la forma mentis che permette di sapere come agire in generale.

Spero di aver dato una panoramica quanto più ampia possibile. Pur sapendo che alcune parti dell’articolo richiedono la conoscenza di alcuni concetti informatici, se ritenete che in alcuni passaggi la spiegazione sia scritta in modo poco chiaro fatemelo sapere nei commenti. 😉


Vi è piaciuto l’articolo?

Scrivere software e guide come questa richiede tempo. Se avete trovato queste informazioni utili, potete offrirmi un caffè cliccando sul pulsante. 🙂 Se lo fate, per favore lasciate una nota indicando che è per questo articolo.

1.041 pensieri riguardo “Scaricare i contenuti audio e video presenti nelle pagine web — Guida completa

  1. Ci sono riuscito però non esattamente come indicato 😀 in pratica mi sa che ho fatto un misto:

    manualmente con rtmp mi dava errore dicendomi che l’ora era errata e di inserire l’ora corretta, non ho idea di cosa voless dire
    l’M3U8 non l’ho trovato oppure ho cercato male (ehm ma non dovevo trovare o un rtmp o un m3u8?)
    alla fine ho inserito l’rtmp che avevo trovato dentro Vlc e ha funzionato

    Ho fatto un casino inutile? 😀


    Scusate riguardo a Youtube-dl, ma c’è solo per Linux? Perché come plugin di Firefox su Windows non lo trovo


    Scusate se rompo ma sono le prime volte e non mi raccapezzo, ho provato a passare a vvvvid cercando una qualità video migliore rispetto alla scadente di popcorn,
    Provando a trovare il riferimento per Last Exile episodio 1 il download helper mi da tantissimi piccoli segmenti
    Come faccio?

  2. Per cortesia, non lasciare numerosi commenti in sequenza. Ogni volta che qualcuno scrive qui, circa 300 persone ricevono una notifica via email… non è il caso di abusarne, trasformando il blog in una chat. 😉

    l’M3U8 non l’ho trovato oppure ho cercato male

    Ti avevo linkato le istruzioni complete in ogni dettaglio relative anche all’M3U8, però se alla fine hai salvato ottimo, l’importante è arrivare al risultato. 😛

    c’è solo per Linux? Perché come plugin di Firefox su Windows non lo trovo

    No, non c’è solo per Linux, ma nessuno ha mai parlato di plug-in per Firefox. Non è un plug-in, è un software da riga di comando che puoi usare semplicemente dandogli come unico parametro il link a un video su uno dei molti siti che supporta.

    ho provato a passare a vvvvid […] mi da tantissimi piccoli segmenti

    VVVVID purtroppo usa flusso F4M ma (per fortuna) sono su Akamai e quindi si riesce anche ad avere un flusso M3U8 cambiando un po’ l’URL, in quanto il server trasmette in entrambi i formati. Ne ho parlato in questo commento rispondendo a Simo con un esempio pratico. 🙂

  3. Scusa non potendo editare il primo messaggio per scrivere ho dovuto lasciare un altro messaggio, scusa l’ignoranza ma mi mancano proprio le basi e non so esattamente cosa cambia da un flusso f4m ed un flusso m3u8, é solo un discorso di diversi formati? O c’è una qualità maggiore od inferiore?

    Sto provando e riprovando ma purtroppo non riesco bene a trovare gli url leggendo le sorgenti delle pagine von firebug e i programmi di comando non mi funzionano (ne rtmp ne youtube-dl), ho letto e riletto e mi sembra di fare correttamente evidentemente faccio qualche errore di cui non mi accorgo 🙁

  4. Sono riuscito a far funzionare Youtube-dl ma c’è comunque qualcosa che non va. Scarico da Youtube, scarico da Popcorn (il link che avevo messo all’inizio) ma quando si tratta di Crunchyroll non va a buon fine… non riesco a prendere i sottotitoli.
    Ho fatto un po’ di prove e, basandomi sulla riga di comando che hai messo qualche post fa, ho visto che se tolgo dalla riga la scritta --all-subs riesco a scaricare solo il video… se ce la lascio non scarico niente.

    Ti metto un paio di immagini di quello che mi succede (ti metto i link alle immagini, non so come postare le immagini a dovere qua dentro).

    Questo è quello con la scritta “–all-subs”:

    http://i63.tinypic.com/2lvhgk8.jpg

    Questo è quello senza:

    http://i65.tinypic.com/25phf6g.jpg

    Hai qualche idea di dove possa essere la magagna??? A te funziona bene??? Visto che c’è una specie di elenco di file, possibile che mi manchi qualcosa (o che li abbia piazzati male)???

    PS: dove vedi _ _ _ _ ci sarebbe il mio nome e cognome che non mi va di mettere in mostra, non è il percorso sbagliato.

  5. Ho risolto alcuni problemi ma non riesco con altri 🙁
    Per ottenere la massima qualità possibile va bene

    avconv -i "URL/master.m3u8" -acodec copy -vcodec copy -qscale 0 output.mp4
    

    ? (sto usando sempre avconv perche youtube-dl non riesco a farlo funzionare)

    seguendo i vari interventi ho trovato questo:

    http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/Trider%20G7/Trider%20G7_Ep01.mp4/media_b1621560_w440821347.abst/Seg1-Frag1
    

    e lo trasformo in questo:

    http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/Trider%20G7/Trider%20G7_Ep01.mp4/master.m3u8
    

    in VLC tutto perfetto ma con avconv non va, ho provato come trovato qui a stare attento a %20 e fatto attenzione alle virgoletto ma nulla

    invece questo:

    http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/LastExile/LastExile_Ep01.mp4/master.m3u8
    

    parte ma segna continui errori in giallo continuity check failed for pid _ expexted_ got_

    Help please

  6. Crozzato, se ti funziona con gli altri siti ma non con i sottotitoli di Crunchyroll è probabilmente un bug (che andrebbe discusso con gli autori di youtube-dl). 🙂 Non so dirti se stai usando una versione vecchia oppure se è una questione che affligge specificamente Windows, di certo posso dirti che la versione che ho installato qui su Ubuntu mi funziona.

    Magari la tua versione è schizzinosa e vorrebbe che tu mettessi --all-subs alla fine, chissà.

    ti metto i link alle immagini, non so come postare le immagini a dovere qua dentro

    Ah, pardon! Puoi usare HTML o Markdown per formattare i tuoi commenti (intanto ti ho sistemato l’ultimo). Personalmente trovo Markdown più comodo e più facile. 🙂

    Luca,

    on so esattamente cosa cambia da un flusso f4m ed un flusso m3u8, é solo un discorso di diversi formati? O c’è una qualità maggiore od inferiore?

    Sono due modi diversi per fornire uno stream. Generalmente, se è lo stesso server a fornire entrambi i flussi, il formato finale in realtà è lo stesso (ad esempio H264 per il video e AAC per l’audio, che puoi incapsulare in un comune MP4) però la differenza è che M3U8 è più semplice da scaricare, mentre gli F4M sono più rognosi.

    Per ottenere la massima qualità possibile va bene [...]?

    Non è detto, perché in genere una playlist M3U8 potrebbe contenere link a diversi flussi, nei file con nomi standard tipo master.m3u8 oppure manifest.m3u8 o simili. L’esempio che hai messo tu più in basso però in effetti ha un solo flusso:

    andrea@farore ~/Scrivania> curl 'http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/Trider%20G7/Trider%20G7_Ep01.mp4/master.m3u8'
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1783716,CODECS="avc1.66.30, mp4a.40.2",RESOLUTION=720x540
    chunklist_w891061376.m3u8
    

    Quindi in questo caso è OK, c’è una sola risoluzione disponibile. Se ce ne fosse stata più di una, avresti potuto scaricarti il file M3U8 in sé (non registrarlo, proprio salvare il file) che è un file di testo di poche righe (vedi appunto l’esempio qui sopra) contenente link a varie risoluzioni (oppure direttamente una lunga lista di frammentini di video). Nell’esempio sopra, potresti voler espressamente puntare alla qualità 720x540 ottenendo questo:

    http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/Trider%20G7/Trider%20G7_Ep01.mp4/chunklist_w891061376.m3u8
    

    in VLC tutto perfetto ma con avconv non va

    Stessa cosa che ho scritto sopra a Crozzato. Perlomeno con ffmpeg, ma anche con avconv presumo, viene fuori un avviso che ti dice di aggiungere un altro parametro:

    [mp4 @ 0x9a6820] Malformed AAC bitstream detected: use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg)
    

    In particolare dove dice:

    use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg)
    

    questo [...] parte ma segna continui errori in giallo

    Se sono in giallo non sono errori, ma avvertimenti (altrimenti sarebbero in rosso). 😀 Ti informa che potrebbe esserci qualche imperfezione, ma se poi il video finale funziona tu ignorali pure. 😉

  7. Grazie di tutto Lazza, sembra proprio che fosse un bug che hanno aggiustato nell’ultima versione uscita l’altro ieri… ora parte. Il bonifico a chi lo intesto??? XD. Grazie ancora.

  8. l’opzione “-bsf:a aac_adtstoasc” con avconv non funziona, come converto questa opzione per avconv?

    le linee di comando per youtube-dl (e per ffmpeg) sono molto diverse da quelle di avconv? perche non riesco a far funzionare nessuno dei due 🙁

  9. Luca,

    Come faccio a vedere i flussi disponibili all’interno del master.m3u8?

    È un file di testo, lo salvi e lo apri. Oppure (su un sistema operativo serio) usi direttamente curl nel terminale dandogli il link così visualizzi direttamente il contenuto a video come ti ho mostrato nell’altro commento. 🙂

    l’opzione -bsf:a aac_adtstoasc con avconv non funziona

    Permettimi di avere seri dubbi in merito, visto che è indicata anche nella documentazione ufficiale. In ogni caso, usa ffmpeg che è anche lo strumento attualmente raccomandato nella guida.

    le linee di comando per youtube-dl (e per ffmpeg) sono molto diverse da quelle di avconv?

    Youtube-dl si lancia semplicemente dandogli l’URL di una o più pagine, poi ci sono altre opzioni se uno vuole impostare preferenze particolari, ma raramente dovrai usare cose troppo complicate.

    avconv è un fork di ffmpeg sicché non c’è praticamente alcuna differenza nell’utilizzo dei due, a parte per opzioni particolari.

    Crozzato, bene. 😀 Se vuoi fare una donazione puoi farla su PayPal usando il bottone in fondo all’articolo o tramite il mio indirizzo email.

  10. Sbaglierò qualcosa io ma l’opzione di ffmpeg l’avevo provata più volte su avconv e non mi funzionava.

    Se avconv e ffmpeg sono praticamente la stessa cosa come mai dello stesso video con ffmpeg mi viene un file MP4 più piccolo di 20-30mb?

    Ps:
    Di avconv ho usato la linea qui indicata con “i” le opzioni indicate (video, audio etc) e output.mp4 in fondo, mentre con ffmpeg ho usato solo “i” e output.mp4 in fondo perche quelle opzioni in ffmpeg non mi andavano (cosa opposta di -bsf:a acc_adtstoasc)

  11. Ciao Lazza,
    Scusa se ti disturbo anche questa volta ma credo che non esista una soluzione per scaricare da wakanim a me nota.
    Il sito in questione da quello che ho capito non usa nessun plugin per funzionare (ho provato a disattivarli tutti e nonostante tutto partiva).
    Il link dal quale voglio scaricare è il seguente:
    http://www.wakanim.tv/it/v2/catalogue/episode/1770/asterisk-war-13
    Purtroppo è necessaria una veloce registrazione e poi si puo’ continuare come free user.
    Riesco ad individuare il video dal sorgente:

    http://www.wakanim.tv//it/v2/video/mnff?manifest=http%3A%2F%2Fwmvideocdn-wakatest.streaming.mediaservices.windows.net%2F0d18dc8d-083f-43cd-bedc-36384e4e97e3%2FWAKANIM_prores_out.ism%2FManifest%28format%3Dm3u8-aapl%29&token=Bearer%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cm46bWljcm9zb2Z0OmF6dXJlOm1lZGlhc2VydmljZXM6Y29udGVudGtleWlkZW50aWZpZXIiOiI5ZmUyYzdhMC1kM2FjLTQxNjItOTg2My1mOGZhZGUwMjkzYWEiLCJpc3MiOiJXYWthbmltLlRWIiwiYXVkIjoiaHR0cDovL3d3dy53YWthbmltLnR2IiwiZXhwIjoxNDU5OTY0MDUyLCJuYmYiOjE0NTk4Nzk3NTJ9.2jQH1kcW-2LMqNjN2mKQKZv71H8y-VhFlXTb0V9EEW0&idepisode=1770&numero=13&idserie=133

    lo apro con firefox e mi scarico il file senza estensione. Aprendolo in blocco note ottengo diversi flussi(a seconda della qualità) ma non ho idea di come scaricarli dal momento che non terminano con una estensione.
    Prendendone uno per esempio:

    http://www.wakanim.tv/it/v2/video/mnffsnd?manifest=http%3a%2f%2fwmvideocdn-wakatest.streaming.mediaservices.windows.net%2f0d18dc8d-083f-43cd-bedc-36384e4e97e3%2fWAKANIM_prores_out.ism/QualityLevels(1898039)/Manifest(video,format=m3u8-aapl)&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cm46bWljcm9zb2Z0OmF6dXJlOm1lZGlhc2VydmljZXM6Y29udGVudGtleWlkZW50aWZpZXIiOiI5ZmUyYzdhMC1kM2FjLTQxNjItOTg2My1mOGZhZGUwMjkzYWEiLCJpc3MiOiJXYWthbmltLlRWIiwiYXVkIjoiaHR0cDovL3d3dy53YWthbmltLnR2IiwiZXhwIjoxNDU5OTU5ODE4LCJuYmYiOjE0NTk4NzU1MTh9.KFDQKxxPcEDIqewX_bCqf6mSjADLmO7bJkOgrDpEe_k

    Con un po’ di fatica si riesce a distinguere un .ism ma leggendo esattamente qualche parola più avanti m3u8. Quindi a cosa siamo di fronte? usiamo ISM Downloader? usiamo Avconv? Ho provato entrambi su windows ma senza successo.
    Allora ho provato ad aprire uno di questi flussi che usano come codec o “mp4a.40.2” o “avc1.64001f” copiando l’indirizzo in firefox, tuttavia vedo la frammentazione del flusso in entrambi i casi (anche se leggermente differente). Il problema principale tuttavia permane: non essendo indicata una estensione non so di che cosa si parli né come scaricarli.

    E’ possibile uscire da questo labirinto, o grande Lazza?
    Spero che il messaggio non sia troppo pesante ma volevo cercare di essere più dettagliato possibile per farti risparmiare tempo e far capire eventuali futuri utenti.
    Grazie in anticipo per la mano.

  12. Luca, cioè mi stai dicendo che con ffmpeg non hai copiato gli stream originali (con -codec copy oppure -acodec copy -vcodec copy oppure -c:v copy -c:a copy)? Allora per forza è diverso il file, perché mentre con avconv hai copiato il flusso originale, con ffmpeg hai effettuato una transcodifica e quindi hai perso un po’ di qualità. 🙂

    Simone, sì sono flussi M3U8 ma fanno dei controlli stringenti sui cookie. Quindi in teoria uno dovrebbe far sì che ffmpeg (o avconv) si colleghi a quell’indirizzo passando i cookie necessari in modo da passare il controllo, ma attualmente non si può fare (è una limitazione del programma).

    Tiziano, premesso che credo sia tranquillamente possibile registrare anche il flusso RTMP, ti propongo una soluzione alternativa tanto per vedere qualcos’altro. 😛 Cambiando lo user-agent con quello di un dispositivo mobile, vedrai che il player viene messo dentro a un iframe creato a runtime:

    Screenshot codice sorgente HTML

    Per comodità, puoi cliccare col destro sul nodo <html> interno e fare “Copy innerHTML” per poi aprire un qualsiasi editor di testo e fare “incolla”. Tra le altre cose, troverai dentro righe del tipo:

    <video src="rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" style="display: block; opacity: 1;" x-webkit-airplay="allow" id="div-player-player-sanmarino-9TKM6A3LSM7R-1459946711642-4101730456961638005_video"></video>
    [...]
    levels: [ {file: "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4"} ],
    

    Quindi è piuttosto evidente che ci sia un flusso RTSP disponibile e puoi registrarlo normalmente con ffmpeg:

    ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
    
    1. Ciao Andrea, grazie per la risposta, ho provato a fare come mi hai suggerito, ma ho trovato alcune difficoltà.
      Il link che suggerisci è decisamente funzionante, perchè se lo metto in VLC, nella sezione url, lo vedo, anche se ad un certo punto il video si stoppa. Lo stesso vale per MPlayerx.

      Allora ho provato con ffmpeg, ma mi da il seguente errore:

      :~ tizianosambo$ /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4
      ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
        built with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
        configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --disable-doc --arch=x86_64 --enable-runtime-cpudetect
        libavutil      55. 17.103 / 55. 17.103
        libavcodec     57. 24.102 / 57. 24.102
        libavformat    57. 25.100 / 57. 25.100
        libavdevice    57.  0.101 / 57.  0.101
        libavfilter     6. 31.100 /  6. 31.100
        libswscale      4.  0.100 /  4.  0.100
        libswresample   2.  0.101 /  2.  0.101
        libpostproc    54.  0.100 / 54.  0.100
      Output #0, mp4, to 'rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4':
      Output file #0 does not contain any stream
      MacBook-Pro-di-Tiziano:~ tizianosambo$ ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
      -bash: ffmpeg: command not found
      MacBook-Pro-di-Tiziano:~ tizianosambo$ /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
      ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
        built with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
        configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --disable-doc --arch=x86_64 --enable-runtime-cpudetect
        libavutil      55. 17.103 / 55. 17.103
        libavcodec     57. 24.102 / 57. 24.102
        libavformat    57. 25.100 / 57. 25.100
        libavdevice    57.  0.101 / 57.  0.101
        libavfilter     6. 31.100 /  6. 31.100
        libswscale      4.  0.100 /  4.  0.100
        libswresample   2.  0.101 /  2.  0.101
        libpostproc    54.  0.100 / 54.  0.100
      [rtsp @ 0x7fdae9002e00] UDP timeout, retrying with TCP
      Input #0, rtsp, from 'rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4':
        Metadata:
          title           : WowzaMediaServer
        Duration: 00:18:56.00, start: 0.000000, bitrate: N/A
          Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
          Stream #0:1: Video: h264 (High 4:2:2), yuv420p(tv, bt709), 864x480 [SAR 1:1 DAR 9:5], 25 fps, 25 tbr, 90k tbn, 50 tbc
      [NULL @ 0x7fdae9005a00] Unable to find a suitable output format for 'ffmpeg'
      ffmpeg: Invalid argument
      

      Dove sbaglio? Non c’è un programmino che mettendo il link lo scarica e basta…

      Grazie
      Tiziano

  13. 🙁 🙁 🙁
    Ecco lo sapevo che stavo facendo qualche cavolata, -vcodec copy -acodec copy che usavo con avconv su ffmpeg non mi funzionava e le altre che mi hai scritto ora non le conoscevo!
    Grazie infinite

  14. Buonasera Lazza,
    per prima cosa complimenti per tutto il tuo lavoro e x la tua pazienza, proprio appellandomi a questa vorrei cortesemente chiederti aiuto per poter imparare a scaricare da popcorntv e nel caso specifico questo video http://animemanga.popcorntv.it/guarda/the-galaxy-railways-episodio-01/8553.
    Premetto che sono completamente alle prime armi e che proprio leggendo qui sto muovendo i primi passi. Come da tue spiegazioni ho scaricato il necessario e quindi anche Firebug e poi una volta aperto ho cercato sotto Net alla voce All e nella colonna Dominio, tra i rrr.sz.xlcdn.com, (come da risposta di XenmasXIII a Dragone1992) l’Url giusto da usare in Avconv… ma ora mi sono perso… Nell’attesa di un tuo aiuto, scusami per la lunghezza del commento… Buon proseguimento.

  15. Angelo, grazie per i complimenti. 🙂 Di PopcornTV ne abbiamo parlato poco sopra con Luca. Visto che menzioni avconv (che poi ormai il post parla di ffmpeg, ma fa poca differenza) deduco che tra le due strade possibili (M3U8 oppure RTMP) tu abbia scelto l’M3U8.

    Buona scelta direi, ma non puoi “trovare” direttamente il link al flusso con Firebug. Devi prendere quello che finisce per smil e modificarlo leggeremente (vedi le istruzioni linkate in risposta a Luca).


    Tiziano, urca non è stata una buona idea fare un mega copia-incolla nel commento. 😀 Ora l’ho sistemato un po’ e dovrebbe essere più leggibile. Comunque, vedo che tu hai lanciato tre comandi:

    /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4
    

    Qui manca -i prima dell’indirizzo del flusso e comunque sarebbe meglio usare le virgolette per evitare problemi con l’URL. 😀 Poi ti manca anche -codec copy (o dicitura simile messa separatamente per audio e video) così da non perdere qualità… e il nome del file di output.

    ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
    

    Questo è perfetto. Ricevi command not found perché il comando non è nel $PATH, pertanto la console non lo trova senza dargli il percorso completo.

    /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
    

    Qui hai scritto un pezzetto di troppo. 😉 Immaginatelo senza percorso: inizia per ffmpeg ffmpeg -i, insomma c’è un ffmpeg intruso. Immagino tu voglia scrivere questo qui:

    /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg -i "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4" -codec copy output.mp4
    

    Non c’è un programmino che mettendo il link lo scarica e basta

    Certo, è ffmpeg. 😀 Non solo ti scarica i frammenti, te li mette anche insieme in un unico MP4. Inoltre se vuoi, puoi definire una funzione in Bash:

    scaricasenzafarestorie () { /Users/tizianosambo/Downloads/SnowLeopard_Lion_Mountain_Lion_Mavericks_Yosemite_El-Captain_25.02.2016/ffmpeg -i "$1" -codec copy output.mp4 }
    

    Poi la andrai a salvare nel tuo file .bashrc e la richiamerai con:

    scaricasenzafarestorie "rtsp://o4.senape.tv:1935/webtv_vod4/_definst_/mp4:sanmarino/9TKM6A3LSM7R-3_1415343870247.mp4"
    

    Ma sto divagando. 😛


    Edoardo, eh ma non hai cambiato user-agent. 😀 C’è un motivo se dico di farlo specialmente per avere flussi M3U8:

    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/master.m3u8
    

    Contenuto:

    andrea@farore ~/Scrivania> curl 'http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/master.m3u8'
    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=456000,RESOLUTION=512x288,CODECS="avc1.66.30, mp4a.40.2"
    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/index_400_av-p.m3u8?sd=10&rebase=on
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=456000,RESOLUTION=512x288,CODECS="avc1.66.30, mp4a.40.2"
    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/index_400_av-b.m3u8?sd=10&rebase=on
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=964000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2"
    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/index_900_av-p.m3u8?sd=10&rebase=on
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=964000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2"
    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/index_900_av-b.m3u8?sd=10&rebase=on
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1596000,RESOLUTION=720x404,CODECS="avc1.77.30, mp4a.40.2"
    http://everyrai-lh.akamaihd.net/i/raisportjolly1_1@177967/index_1500_av-p.m3u8?sd=10&rebase=on
    

    Ovviamente il buon VLC senza tanti problemi ti andrebbe a prendere la risoluzione più bassa, visto che è la prima disponibile. 😛 Ma tu puoi usare uno degli indirizzi con la qualità specificata manualmente. 😉

  16. Ciao Lazza, in quest’ultimo anno sono riuscito a fare lo streaming offline dei miei contenuti preferiti e questo lo devo a te. Purtroppo di recente VVVVID ha cambiato qualcosa nei suoi video difatti non riesco piu a scaricare alcuni flussi m3u8 con i metodi usati prima, mi spiego meglio:

    Sono riuscito a scaricare pefettamente questo manifest

    http://vvvvid-vh.akamaihd.net/z/Dynit2/Jojo/JojoDiamond_S04Ep01_URRIVVondNoXLwsYm.mp4/manifest.f4m
    

    trasformandolo in ,,.mp4.csmil/index_0_av.m3u8:

    http://vvvvid-vh.akamaihd.net/i/Dynit/Jojo/JojoDiamond_S04Ep01_URRIVVondNoXLwsYm,,.mp4.csmil/index_0_av.m3u8
    

    E fin qui tutto bene, pero’ per il secondo episodio

    http://vvvvid-vh.akamaihd.net/z/Dynit2/Jojo/JojoDiamond_S04Ep02_uyR6GPaGbiD7IJQVm.mp4/manifest.f4m
    

    Pur trasformandolo in m3u8 JDownloader non lo riconosce e la stessa cosa vale per questo:

    http://vvvvid-vh.akamaihd.net/z/Dynit2/Terraformars/Terraformars_S02Ep01_caCITEqCEAERJvQBm.mp4/manifest.f4m
    

    Sai spiegarmi il perche’ di tutto cio?

  17. Salve, è da molto che non smanetto con vvvvid e ho visto che le cose sono cambiate. Mi dite, per cortesia, qual’è il nuovo url m3u8 da inserire nei downloader per scaricare i video? Mi interessano essenzialmente questi due:

    https://www.vvvvid.it/#!show/509/le-bizzarre-avventure-di-jojo-diamond-is-unbreakable

    https://www.vvvvid.it/#!show/510/terra-formars-revenge

    Una curiosità: jdownloader2 con altri link sempre da vvvvivid basta che copio il link e lui me lo trova in auto matico, ma con questi due proprio non lo fa. Saranno speciali? Boh…

  18. Ramzh e Aster14,

    Sono riuscito a scaricare pefettamente questo manifest

    Interessante. A me non va. Come ci sei riuscito?

    Qual è il nuovo url m3u8 da inserire nei downloader per scaricare i video?

    Bella domanda. 😀 Ammesso che VVVVID ne fornisca ancora uno, di flusso M3U8.

    1. Per il primo manifest ho usato lo stesso metodo visto in precedenza quello di trasformarlo in ,,.mp4.csmil/index_0_av.m3u8 ieri, ora che ho riprovato non funziona piu’ e la stessa cosa per gli altri link…

  19. Vedo che non sono l’unico ad avere problemi su VVVVID/JoJo. Allora, io il primo episodio sono riuscito a prenderlo, partendo da:
    http://vvvvid-vh.akamaihd.net/z/Dynit2/Jojo/JojoDiamond_S04Ep01_URRIVVondNoXLwsYm.mp4/manifest.f4m
    smanettando un po’ (cambio z/i, ho tolto il 2, aggiunto index_0_av.m3u8), con questo sono riuscito a scaricare:
    http://vvvvid-vh.akamaihd.net/i/Dynit/Jojo/JojoDiamond_S04Ep01_URRIVVondNoXLwsYm.mp4/index_0_av.m3u8
    Ma tutto questo è successo l’altro ieri, oggi la stessa linea di comando non funziona più… ed ovviamente succede lo stesso con il secondo episodio, quello che mi interessa.
    Sul vlc, cosa mai successa prima, per il primo episodio mi compaiono scritte “segment1_0_av.ts?null=0”, “segment2_0_av.ts?null=0”, “segment3_0_av.ts?null=0”, ecc mentre per il secondo episodio da proprio errore. Non ho la pallida idea di come muovermi in mezzo a questa roba XD.

    Ramzh, il codice che hai trovato per il primo episodio a te funziona oggi??? Come dicevo, il mio metodo è un po’ baruffo ma il primo episodio sono riuscito a prenderlo giorni fa… oggi no.

  20. Ramzh, il codice che hai trovato per il primo episodio a te funziona oggi?

    Diceva di no nel commento precedente. Insomma pare che abbiano modificato il sito nelle ultime 24 ore. 😛

  21. Buonasera Lazza, abuso nuovamente della tua pazienza tornando su popcorntv…
    http://animemanga.popcorntv.it/guarda/the-galaxy-railways-episodio-01/8553
    mi fermo sempre alla schermata di firebug cercando sotto Net, alla voce All e nella colonna Dominio, tra i rrr.sz.xlcdn.com, (come da risposta di XenmasXIII a Dragone1992) a cercare questo benedetto url smil per poi correggerlo come da te spiegato… ma niente… ho anche provato a cambiare l’user agent, ma ovviamente sto sbagliando qualche passaggio… potresti darmi cortesemente una mano, magari con un’immagine… vedi non è tanto il fatto di scaricare il video in questione, ma di capire bene il metodo per poi riapplicarlo in seguito… un grazie anticipato e rinnovati complimenti.

  22. Ah pardon, visto il contenuto del tuo commento avevo dato per scontato che fosse ancora uno dei video vecchi. Invece quello che hai linkato tu è uno di quelli nuovi col player Vimeo (non era specificato 😝).

    Hai visto la riga 372 del codice HTML della pagina?

    file:"https://player.vimeo.com/external/160367678.m3u8?s=306c676cb8b6ee35fd7a5af2922ccce37f6f6987",
    

    Visto che è lì in bella mostra puoi persino dare l’URL della pagina direttamente in pasto a youtube-dl e si arrangia lui. 😉

  23. rieccomi 😀
    Andrea provato come dicevi (ffmpeg -i url -codec copy output.mp4) ed infatti tutto perfetto ed il file (con -codec copy) passa dai 90-100MB ai 280MB 😀

    ho dovuto usare -bsf:a aac_adtstoasc come mi avevi suggerito per risolvere il problema audio che segnalava.

    quell’opzione pero mi funziona solo con ffmpeg, il corrispettivo di quell’opzione per avconv c’è?

  24. Grazie per le informazioni, dettagliate ed esaurienti. Vorrei porre un quesito. Da qualche giorno, Facebook ha lanciato il servizio di live streaming “Facebook Live”. Dalle informazioni raccolte, credo di aver capito che utilizzi il protocollo RTMP. Per esigenze personali, dovrei poter utilizzare un player diverso, che necessita dell’url del flusso, per poterlo riprodurre.

    Due domande:

    E’ possibile riprodurre il flusso streaming all’esterno di Facebook?
    In caso positivo, come posso scoprire i dati dello streaming?

    Un grazie anticipato a chi potrà eventualmente darmi una risposta

  25. Ramzh (e Mega), che sia tecnicamente possibile registrare il flusso è probabile, anzi quasi certo. Dopotutto è un flusso F4M, nella peggiore delle ipotesi uno dovrebbe farlo andare tutto mentre registra il traffico con un packet tracer, poi estrarre i frammenti e muxarli a mano.

    Ma a questo punto la questione diventa: quand’è che un metodo diventa troppo tedioso perché valga davvero la pena farlo? Ha senso mettersi lì a perdere un pomeriggio intero per vedere di registrare un flusso perché è tecnicamente possibile ma un macello da fare in pratica?

    Se la risposta è “vale la pena a qualsiasi costo” ok, ma dovrà essere qualcuno che guarda VVVVID a farlo. A me personalmente non interessa perdere una giornata di lavoro per un sito web che non uso. 😀 E non penso neanche di potermelo permettere, in termini di tempo.


    Luca, come ti dicevo già in precedenza, quell’opzione è indicata tale e quale nella documentazione ufficiale di avconv. 🙂


    Alessandro, potresti linkare un esempio di pagina Facebook in cui compare un flusso live e anche le informazioni sull’RTMP che hai trovato analizzando la pagina? 🙂

    1. Da quanto ho visto penso che gli streaming F4M siano criptati in qualche modo non so perche guardando in giro nella tabella net noto i vari frammenti f4f piu uno che si distingue dagli altri perche inzia con ‘key’ invece che la solita combinazioni di numeri o lettere. Comunque se mi puoi solo dire come fare io posso provarci

  26. Ciao Lazza, porta pazienza, ma sempre in riferimento a quel video di popcorntv (portato come esempio per imparare) http://animemanga.popcorntv.it/guarda/the-galaxy-railways-episodio-01/8553 io ho scaricato sia youtube-dl che Python, ma al momento di usarli (come da tua risposta:

    Hai visto la riga 372 del codice HTML della pagina?

    file:"https://player.vimeo.com/exter/160367678.m3u8s=306c676cb8b6ee35fd7a5af2922ccce37f6f6987",

    Visto che è lì in bella mostra puoi persino dare l’URL della pagina direttamente in pasto a youtube-dl e si arrangia lui

    mi si apre solo una schermata di Python mentre non so come utilizzare youtube-dl… Perdona la mia ignoranza… potresti spiegarmi come fare, sempre grazie e buona serata.

  27. Lazza capisco…io ci sto provando da solo, anche per imparare…però non sn al vostro livello di conoscenza…XD

  28. Andrea ho riscontrato una cosa strana (motivo per cui probabilmente non mi funzionava l’opzione) che però non ha senso:
    se inserisco nel file.bat da me creato questa riga:

    ffmpeg -i "http://wowzaondemand.top-ix.org/videomg/_definst_/mp4:Dynit/Trider%20G7/Trider%20G7_Ep02.mp4/master.m3u8" -codec copy  -bsf:a aac_adtstoasc  output.mp4
    

    mi da errore e non funziona, ed è lo stesso file.bat che funzionava perfettamente con altri URL

    mentre invece se copio/incollo la stessa riga nel Prompt cmd la riga funziona perfettamente.

    Come caspita è possibile???

  29. Ramzh,

    Comunque se mi puoi solo dire come fare

    Se io avessi la soluzione pronta te l’avrei già detta, non avrei particolare interesse a tenermela. 😀 In sintesi devi “solo” trovare il modo di far vedere a AdobeHDS.php il manifest, perché tentando di accederci semplicemente va in 403 Forbidden. Ho il forte sospetto che c’entrino i flag --auth, --referrer e --useragent del suddetto script.

    Angelo,

    non so come utilizzare youtube-dl

    In realtà non c’è moltissimo da spiegare, la riga di comando è questa:

    youtube-dl http://animemanga.popcorntv.it/guarda/the-galaxy-railways-episodio-01/8553
    

    Comunque fallo con Linux che è molto meglio per queste cose. Anzi, è meglio in generale, ma questo è un discorso a parte.

    Luca, non credo sia questo il luogo adatto per discutere le idiosincrasie di Windows. 😛 Ma potrebbe anche essere un problema di escaping del carattere %… boh. Se usate Windows poi non posso aiutarvi a risolvere i problemi. 😉

  30. Tranquillo Il passaggio a Linux per tutto ciò che non è gaming (per il quale sono obbligato a Windows) è già programmato 😀
    (Stai pronto alle domande 😛 )

    Tornando in tema flussi, se io inserisco nella riga “master.m3u8” e il flusso è multi-res mi prende tutto? Come faccio a selezionare la versione a risoluzione più alta?
    Come faccio a vedere se il flusso è multi-res?

    Per i flussi MSS posso fare anche con altro pragramma?
    Oppure solo con Mplayer? Perché ci mette una vita

    Grazie anticipatamente

  31. se io inserisco nella riga “master.m3u8” e il flusso è multi-res mi prende tutto?

    No, ne prende una che dipende dal programma che usi. Generalmente sia ffmpeg che VLC prendono la prima elencata nel file. In molti siti la prima è la più bassa, ma dipende da come decide di fare il sito.

    Come faccio a selezionare la versione a risoluzione più alta?
    Come faccio a vedere se il flusso è multi-res?

    Ti apri il file M3U8 (che in realtà è un semplicissimo file di testo) e leggi se contiene una manciata di URL alle varie risoluzioni (tipo da 1 a 6-7) o un elenco lunghissimo di frammenti. 🙂 Se contiene URL ad altri flussi puoi usare direttamente quelli per puntare a una specifica risoluzione.

    Per i flussi MSS posso fare anche con altro pragramma?

    Per i flussi MMS puoi usare anche mimms. Con ffmpeg non credo di aver mai provato.

    1. Be’ scusa… saprai l’URL del file M3U8 se vuoi registrarlo/passarlo a ffmpeg o altri programmi, no? Visto che sai l’URL te lo salvi come un normalissimo file.

  32. Sorry, l’avevo fatto ma pensavo di aver sbagliato e che ci fosse un altro modo per farlo 😀
    Poi ho realizzato che vedevo sempre una sola risoluzione perché per la risoluzione più bassa c’era direttamente un altro url ad un altro file.mp4

  33. Ciao, sono interessato a salvare dei video da un sito che usa la piattaforma octoshape (con Adobe Flash Player) di solito uso un estrattore di video on line per salvare video da altri siti come rai/mediaset ecc, ma con questo sito non funziona, ho provato anche tramite sorgente pagina, ma nulla. potresti aiutarmi? grazie. Il sito è questo http://www.eurovision.tv/page/webtv?program=111443

  34. Ciao Andrea, ho capito come fare più o meno con tutti i siti vari, unico che non riesco a trovare nulla è crunchyroll ci vuole una procedura particolare?
    Grazie

    Ps: ah e non so perché jojo su vvvvid deve essere diverso da tutti gli altri perché non riesco a trovare nulla di funzionante 🙁

  35. La cosa bella è che su vvvivid terra formars revenge e jojo non lo si riesce a scaricare, mentre altri anime in corso tipo boku no hero academia riesco a salvarli facilmente.

  36. Sandro, il problema su quel sito è diviso in due parti:

    • rtmpdump non riconosce automaticamente come “spezzare” l’indirizzo nella parte del server e quella del nome del file, quindi lo devi fare a mano
    • devi dargli l’indirizzo del player in Flash perché lo controlla prima di consentirti la registrazione

    Ah, e devi anche farla andare senza troppa fretta con -R altrimenti si blocca a metà. Quindi dovrai fare una cosa di questo tipo:

    rtmpdump -R -r "rtmp://stream.ictv.ua:80/vod" -W "http://faktu-week.ictv.ua/swfobject/zl_player.swf" -y "ictv/2012/08/27/mp4:20120827181445.mp4" -o output.flv
    

    Francesco, quel sito usa Octoshape, una piattaforma con un player proprietario da installare a parte. Ammettendo che poi il player stesso usi un flusso di qualche tipo “standard”, bisognerebbe mettersi lì qualche ora a fare reversing del binario e sperare di ricostruirne il funzionamento. Il gioco non vale la candela.

    Luca, nessuna procedura, basta youtube-dl… tra l’altro ne abbiamo parlato pochissimo tempo fa.

  37. No be’, puoi pure fartelo a mano (come abbiamo già discusso nei commenti con Crozzato) ma chi te lo fa fare? È una rottura di scatole considerevole, al secondo o terzo video ti verrebbe l’istinto irrefrenabile di gettare il computer dal quinto piano di un palazzo.

    Tentazione che comunque dovrebbe già esserti venuta da un pezzo, perché se non ho capito male usi Windows. 😉

    1. Cosa sbaglio?

      Non saprei, dovresti dirci che linea di comando hai dato. 😀 Con Firebug si trovano subito gli indirizzi dei flussi M3U8 nelle varie qualità.

  38. Ciao Lazza,
    cortesemente potresti controllare questo video di “a caccia di enigmi, stagione 1, ep 6…”
    http://it.dplay.com/a-caccia-di-enigmi/stagione-1-episodio-6/
    a me non riesce a finire mai di scaricarlo… avconv smette improvvisamente di funzionare verso gli 800 mb… il resto della serie tutto ok… il comando usato è questo…

    avconv -i "http://c.brightcove.com/services/mobile/streaming/index/rendition.m3u8?assetId=4781013691001&videoId=4780982593001" -acodec aac -vcodec copy -strict experimental -qscale 0 "a_caccia_di_enigmi_stagione_1_episodio_6.mp4"
    

    Ciao e Grazie.

  39. con avconv per esempio mi dice protocol not found, con ffmpeg mi da errore, scusa ma potresti dirmi allora la stringa?
    Grazie

  40. Angelo, per curiosità, come mai converti l’audio in AAC? E come mai -strict experimental? Comunque sia, se salta il processo a metà probabilmente è un problema del flusso video che è danneggiato.

    Paradi, ripeto: che linea di comando stai dando? E, aggiungerei, che messaggio di errore ti fornisce ffmpeg?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *