È già da un po’ di tempo che se ne parla, i siti di alcune delle maggiori televisioni (Rai e Mediaset) utilizzano la tecnologia Silverlight per pubblicare molti video che si possono (ri)vedere online. Si tratta di un sacco di programmi, fiction, telegiornali, eccetera forniti direttamente dalle suddette reti televisive, quindi si tratta di uno streaming perfettamente legale.
Il problema è che Silverlight è una tecnologia proprietaria di Microsoft che non è molto ben supportata da Linux. È vero, esiste il progetto Moonlight (sostanzialmente fermo), il quale però non supporta a pieno la riproduzione dei video di questi portali. Inoltre non è possibile scaricare le puntate offerte con tecnologia Smooth Streaming allo stesso modo in cui si fa solitamente con i siti che pubblicano video in Flash. Perciò tutto questo complica usi perfettamente legittimi (e prevedibili) dei video, come ad esempio poterli guardare in treno senza avere un computer con connessione 3G.
Per Linux esiste un progetto chiamato smooth-dl
, realizzato da Antonio Ospite, un prolifico sviluppatore di software libero. Per i dettagli sul progetto e la tecnologia di Smooth Streaming, vi rimando al suo articolo che è scritto molto meglio di quanto potrei fare io.
Smooth-dl è però ancora in uno stato “non perfetto”, nel senso che non supporta tutti i siti che offrono video con questa tecnologia, ma lavora bene con il sito Rai. Esiste un software più completo chiamato ismdownloader, che però è realizzato per Windows. Perciò ho deciso di realizzare uno script che “maschera” il programma sotto Wine, e arricchisce la visualizzazione dello stato del download calcolando la percentuale rimanente e mostrandola a video. Di seguito vi spiegherò come effettuare la prima configurazione e poi usare lo script. Se volete fare la stessa cosa usando Mac OS X leggete la guida dedicata.
Creare l’ambiente Wine
Per evitare di “far confusione” e mischiare il programma che useremo per il download con altri eventuali software che girano sotto Wine, vi farò creare un “contenitore” personalizzato con una copia a se stante del disco “C:” simulato. Per prima cosa quindi nel terminale create la directory, dichiaratela come il prefisso di Wine che andrete ad utilizzare e poi “forzate” Wine all’uso dell’architettura a 32bit:
mkdir -p $HOME/.smoothwine export WINEPREFIX=$HOME/.smoothwine WINEARCH=win32 winecfg
Appena finisce di creare la configurazione e vi apre la finestra di Wine, potete chiuderla e proseguire. A questo punto vi servirà Winetricks, che solitamente (perlomeno su Ubuntu) viene installato assieme a Wine, altrimenti provvedete ad installarlo dal vostro gestore di pacchetti. Winetricks si occuperà di scaricare l’ambiente .Net Framework, che servirà poi ad eseguire il programma per il download vero e proprio dei video:
winetricks dotnet20
Seguite la semplice procedura nella finestra che si aprirà e .Net verrà installato. Ora non vi resta altro da fare che cliccare questo link e salvare il file EXE, per poi copiarlo nella cartella che potete aprire usando questo comando:
xdg-open $WINEPREFIX/drive_c
Questo termina la configurazione di Wine. Giunti a questo punto potete procurarvi una copia dello script smooth.sh
col comando seguente, che lo salva nella vostra cartella home:
wget "http://cl.ly/code/3d063j2H1p1M/smooth-lin.sh" -O $HOME/smooth.sh chmod +x $HOME/smooth.sh
Ovviamente se volete potete spostarlo dove vi pare, l’importante poi è richiamarlo correttamente.
Scaricare i video in Smooth Streaming
La parte di configurazione di cui sopra andrà fatta solo la prima volta, in seguito potete limitarvi all’utilizzo dello script come segue. Supponendo che lo script sia nella vostra home e la vostra directory corrente nel terminale sia altresì la medesima cartella, potete semplicemente richiamarlo come segue:
./smooth.sh "http://url/del/manifest" "nome"
Il primo parametro sarà l’URL del cosiddetto file “manifest” relativo al video. Qui viene il problema: ogni pagina web avrà un manifest diverso, e il metodo per ricavarne l’URL varia da sito a sito. Per questo motivo non posso dirvi dettagliatamente come fare a trovarlo in generale, perché la spiegazione sarebbe molto lunga. Per certi siti come quelli di Rai e Mediaset ci sono già delle indicazioni in rete, in ogni caso questo sarà oggetto di un mio prossimo articolo, dedicato appositamente a scovare gli URL dei video online.
Il secondo parametro è il nome (preferibilmente senza spazi) desiderato per il file video (senza estensione). Una volta terminato il download, il video verrà salvato nella vostra home con estensione MKV. Sebbene il contenitore sia Matroska, la codifica vera e propria di audio e video dipende soltanto dal sito web da cui scaricate, quindi potrebbe variare. In ogni caso con VLC e gli opportuni codec dovreste riuscire a visualizzare tutto e potete sempre convertire i video con Arista Transcoder.

Note finali
Come ogni cosa, anche lo script ha i suoi limiti. Il download non si può mettere in pausa, perché il programma originale non lo permette, e ogni tanto succede che l’eseguibile sotto Wine vada in crash. In generale comunque funziona bene, e avendo aggiunto il calcolo della percentuale (non presente in origine) penso di averlo reso abbastanza gradevole anche dal punto di vista estetico. La codifica del video finale è un po’ un terno al lotto, ma quasi sempre non crea nessun problema con VLC.
L’unico difetto visibile dei video è la presenza sporadica di lievissime macchioline nere, ma a dire il vero non so se imputare la cosa al programma che si occupa del download oppure al sito web che fornisce i video. In definitiva comunque i risultati sono buoni e con una risoluzione niente male. Il prezzo da pagare è l’uso di Wine e di qualche componente proprietario, ma d’altronde abbiamo a che fare con tecnologie Microsoft ed è difficile evitarlo del tutto.
Un’altra cosa (facilmente sistemabile) è che gli MKV prodotti possono dare problemi con l’avanzamento veloce e il riavvolgimento. Leggete questo articolo per sapere come risolvere. 😉
Spero di poter finire presto anche il post dedicato a “scovare gli URL” in modo da poter completare questa serie di articoli sul salvataggio dei video, che sembrano essere i più gettonati nel blog. Che ne pensate dello script? Vi tornerà utile?
ho eseguito tutta la procedura ed è andato tutto liscio finchè non ho lanciato il comando di script “smooth” ed è venuto fuori quanto segue:
Verrà scaricato il video dall’url http://replaytv.rai.it/ondemand/VOD_HD/replay_nogeo/sfidemarcosimoncellisicpergliamici-1510201222.40.00/sfidemarcosimoncellisicpergliamici-1510201222.40.000.ism/manifest
Caricamento in corso…
Pulizia in corso…
mv: impossibile eseguire stat di “/home/andrea/.smoothwine/drive_c/simoncelli.mkv”: File o directory non esistente
Download terminato, il video si trova in /home/andrea/simoncelli.mkv
Il file simoncelli non c’è nella home
cosa non funziona?
Purtroppo i manifest della Rai sono “tristemente noti” per essere non standard, sicché può essere che il download non funzioni. Prova con un manifest di qualche altro sito e in teoria dovrebbe andare.
Perché complicarsi la vita inutilmente quando ismdownloader funziona con mono direttamente senza dover usare wine?
Non mi ricordo se l’avevo provato con Mono, probabilmente non mi andava di installare tutto il runtime,e visto che già avevo installato Wine ho deciso di usare quello… Come gestisci il discorso del path? Gli dai un percorso in stile Unix direttamente? Hai provato a usare il mio wrapper con Mono? Fammi sapere. 🙂Edit: anzi ho provato un attimo fa, e il programma fallisce con questo errore:
Mi pareva strano di non averci neppure provato. 😀 Questo dopo aver installato il pacchetto
libmono-corlib2.0-cil
, altrimenti fallisce con un errore di libreria assente.ciao ho provato oggi con un video mediaset di bruttifull. ma anche a me dice non trovato
in ogni caso ottimo lavoro.
(il link del mio test: http://mediasetsmt.alice.cdn.interbusiness.it/smooth/asset02/2012/11/13b472b7d93-1_h264.ism/manifest )
In che senso non trovato? Me lo hai fornito tu l’URL del Manifest, vuol dire che esiste. 😛 Se intendi che non lo scarica be’, ho appena provato e funziona perfettamente. Ma sinceramente mi pareva che gli stream su Video Mediaset fossero accessibili solo dall’Italia, quindi non so se dal Brasile tu riesca a scaricarlo… Dovresti usare un proxy oppure Tor. 😉
canc3lla il commento , ma ti consiglio di modificare la riga dove spieghi dove scaricare ismdowloader, non lo scrivi il nome e elimini in passaggio in mezzo rigo alla prima lettura si salta che è un piacere. probabile che anche il tipo sopra abbia fatto come me. cancella pure anche questo commento è per te. forse scrivo qualcosa nel mio blog. con play mediaset funziona ? è l’unico modo di vedere qualcosa dal brasile . grazie
Effettivamente qualcuno potrebbe pensare di copiare i comandi e basta, cosa che non va fatta… casomai lo sottolineo nel post. 😛
Mi pare di aver letto in giro che gli stream di Premium Play sono crittografati, quindi non funziona. Ma per quanto riguarda la puntata di cui parlavamo prima quindi sei riuscito a scaricarla? Hai dovuto usare un proxy?
si sono riuscito a scaricarla andrea.
ovviamente bisogna aggirare i controlli geoip, quasi sempre presenti, con programmi di ip marquerading o proxy ad ok oppure semplicemente ,come ho fatto io, usare un pc in italia con desktop remoto.
sinceramente un pò di tempo fa ho provato con un programmino che ti altera l’ip di provenienza ma non ha funzionato.
la prossima volta cercherò di usare una vpn ad una mia linuxbox per redirigere il traffico ma non so se funzionerà, nel caso userei un ip della lan remota.
mi scuso per la confusione sinceramente pensavo non avresti pubblicato le mie elucubrazioni fatte nelle notti sudamericane.
Matteo se ti capita di riprovare dall’estero, prova col mio script per Video Mediaset che trovi sotto nei trackback. In teoria il mio script fornisce il link direttamente tramite IP e non so se i controlli geografici abbiano effetto. Ho provato a usarlo con Tor che mi faceva passare per un utente degli USA e sono riuscito ugualmente a salvare il video…
Ciao Lazza, scusa se mi permetto di disturbarti. Ho seguito bene le istruzioni del tuo blog… ma qualcosa non va… il tuo script funziona e riesco a scovare il link diretto al video di dellaraireplay, per intenderci… ma… c’è un ma… ecco qui ti faccio l’esempio
non capisco cosa ci sia di sbagliato… la directory l’ho creata seguendo le istruzioni… e tra l’altro del file “prova.mkv” non c’è traccia.
Ti ringrazio in anticipo nel caso mi risponderai e per la pazienza.
Ciao
ps. ho visto l’ultimo post e non sono la sola ad avere questo problema… dunque significa che è “pestifero” il sito della nostraraitv?
Aspetta un momento… che URL scovi con i miei script su Rai Replay che ti fanno volerli scaricare come Smooth Streaming? Me lo incolli nel commento? Sono sicuro che il mio script per Greasemonkey trova solo link a file in formato MP4 quando agisce su Rai Replay. Diverso invece il discorso per il sito di Mediaset, dove c’è anche l’URL allo Smooth Streaming.
Anche a me viene quell’errore “File o directory non esistente” provando a scaricare questo video: http://www.rai.tv/dl/replaytv/replaytv.html?refresh_ce#day=2013-03-14&ch=1&v=190616&vd=2013-03-14&vc=1
Il problema è di ismdownloader, ti allego l’output da terminale: https://www.dropbox.com/s/85i6oy7z4pnhhyt/konsole.txt
Volevo vedere se il file scaricato era uguale a quello MP4 che sono riuscito a scaricare con il tuo script apposito da Chrome.
(P.S.: la cartella di Wine che ho creato è wine-smooth e non smoothwine, ma ho editato lo script alla riga 14 quindi dovrebbe essere a posto)
Non puoi usare i Manifest Rai perché usano codec particolari e formati XML non standard. Per il sito Rai devi usare il mio script per Greasemonkey che ti darà il link al video. So che mi avevi detto di avere qualche problema con Greasemonkey ma prova con Chromium e Tampermonkey.
Ciao.
In caso di file con protezione DRM immagino non ci siano grosse soluzioni, vero?
Oggi ho tentato di salvare un video da Rai YoYo per farlo vedere ai miei bimbi, ma non sono riuscito…
Questo è quanto eseguito/ottenuto da terminale Dos in Windows:
Ti ringrazio comunque un sacco per l’impegno e la competenza che metti in tutti i tuoi articoli e tutorial.
Sei un mito!
Troppo buono coi complimenti. 😛 Grazie. 😀
No, però consolati, i video della Rai non li puoi comunque scaricare dalla versione Smooth Streaming, perché anche quelli che non cifrano li mettono in AVC. Ok, potresti usare
ismdownloaderavc1
però è scomodo doversi ricordare ogni volta…Ti consiglio invece di provare il mio script per il sito Rai! 😀 Ti permette di salvare i video in MP4 o rippare la versione per tablet, a seconda di cosa è disponibile. Per quello stesso video su Rai Yoyo ti fornisce la seguente riga di comando per
ffmpeg
:Buona visione. 😉
A dire il vero avevo già lo script installato e ben utilizzato da diverso tempo, solo che sono arrivato al link del filmato in smooth streaming direttamente dal sito di Rai YoYo (http://www.raiyoyo.rai.it), non pensando di provare da Rai.tv…
Scusa l’ignoranza, ma lanciando da terminale il comando ffmpeg ecc.ecc. che hai riportato tu e che compare grazie al tuo script ricevo il messaggio di errore sullo streaming in input per “Invalid pixel aspect ratio 1024/1024 ecc..” (vedi sotto):
Solo che non saprei che parametri dare a ffmpeg o che scappatoia utilizzare per risolvere il problema.
Ancora grazie di tutto e ciao!
Orpo! 😯 Ho la stessa tua versione:
Sicuro di avere tutti i codec installati?
Avevo i
libavcodec53
, che ora ho disinstallato per poi installare ilibavcodec-extra-53
;ho fatto un piccolo passo avanti, ma ho ancora qualcosa che non funziona:
Per favore, indenta il codice con quattro spazi o un Tab, così viene convertito in listato. 😉 Così:
Io ho sempre consigliato di installare per intero tutti i codec della mia guida, altrimenti non c’è nessuna garanzia che funzioni. 😛 Nel dubbio prova a seguirla e dopo vedi se ti dà ancora problemi. 😀
Ok per l’indentazione del codice; scusa, ma non sono troppo pratico, quindi spero di farlo correttamente da qui in avanti.
Ho seguito la tua guida per installare i codec e non ho avuto errori di installazione. Per scrupolo, ho anche lanciato un
sudo apt-get update
visto che poco prima dell’installazione dei codec avevo fatto un aggiornamento di componenti base di Ubuntu suggerito dal gestore aggiornamenti, ma il mio risultato purtroppo è stato questo:Per disperazione ho quindi provato ad aprire il link con Vlc e poiché si riusciva a vedere l’ho salvato con la procedura Converti/Salva di Vlc spuntando l’opzione “Dump raw input”.
Ora riesco ad aprire il file tranquillamente con Vlc o Kaffeine indifferentemente, quindi al momento ho bypassato il problema, ma se tu riuscissi a capire che cosa c’è che non va in quello che ho fatto mi faresti un gran piacere; mi secca tanto non capire dove sbaglio o cosa non funziona.
Di nuovo grazie e scusa per il disturbo.
Non preoccuparti, l’hai fatto quasi perfetto. Mancava una riga bianca sopra e sotto al blocco. 😛 In effetti non è scontato ma le ultime versioni di WordPress consentono di scrivere i commenti in una versione leggermente estesa di Markdown e questo facilita molto la vita di chi vuole intervenire nella discussione. 🙂
A questo punto l’unica cosa che mi viene in mente di chiederti è verificare se hai attivato tutti i repository
proposed
,backports
eccetera dalle sorgenti software. Però è strano! Usi Ubuntu a 32 bit o 64 bit? Prova anche a fareffplay -i [URL]
e vedere se te lo riproduce o no. 🙂Io quella non sono mai riuscito a farla funzionare, pensa te! 😀
CIao!
Ho controllato nelle sorgenti software e l’unica voce non spuntata era quella “saucy proposed”, quindi spuntata quella ho scaricato un po’ di aggiornamenti che prima non erano proposti, ma direi che non riguardavano codec, anche perchè sia prima che dopo gli aggiornamenti ho provato anche
e ha riprodotto il video tranquillamente…
Riprovando invece con
ffmpeg -i
ecc. ecc. continuo a ricevere l’errore di ieri…Ho Ubuntu in versione 64 bit.
Sono contento di essere riuscito a scaricare il video con Vlc (e magari a darti uno spunto per tue eventuali prove con lo stesso programma…), ma a questo punto getto la spugna sul provare a capire perchè ho il problema con ffmpeg e non voglio farti perdere tempo.
Grazie ancora per la disponibilità e buon proseguimento!
A presto.
È proprio strano perché abbiamo la stessa identica versione di tutto. 😯 Ti scrivo via email per discutere meglio il problema ed eventualmente se trovo una soluzione la scrivo anche sul blog per i futuri lettori. 😉 Nel frattempo, se vuoi (visto che hai anche Windows) puoi provare
ffmpeg.exe
e dovresti non avere problemi, funziona addirittura con Wine.Ciao, non riesco a trovare l’url di questo video http://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-9727aa17-91ae-49c4-b5c0-1ec33d76ac54.html come faccio?
Grazie in anticipo
Mmm… tu per caso riesci a visualizzarlo? Io no, e guardando nel codice della pagina l’unico video linkato sembra puntare a un file non valido. Se riesci a vederlo mi puoi dare qualche informazione sulla tua configurazione software?
Io uso ubuntu 12.04 e firefox con pipelight, in effeti con tutti questi video http://www.rai.tv/dl/RaiTV/programmi/page/Page-0b570834-adc0-4a3b-8534-ccf0389e68a8.html?set=ContentSet-5ceac911-c855-441b-98a8-17275eb22376&type=V
La prima volta funziona poi se ricarichi la pagina ti dice video non supportato.
Da qualche parte ho letto che sul sito della rai nel sorgente della pagina bisogna trovare il link a un file csm dove poi c’è il link ism
Sì in realtà io cercavo proprio di evitare quello… Anche perché il link
videourl
che hanno messo è un po’ strano, diverso dai soliti. Ad ogni modo c’è una simpatica sorpresa se lo scarichi con user-agent vuoto, ecco:L’output è:
Che puoi scaricare con
mimms
omplayer
senza problemi. Altre versioni non ne ho trovate.ok grazie
Ho cantato vittoria troppo presto:
Ho provato con questo link: http://mediapolis.rai.it/relinker/relinkerServlet.mp4?cont=au0rdUD9jeceeqqEEqual&contenttype=wmv
e da di output http://www.rai.tv/dl/RaiTV/2012/images/logo.png
Cosa sbaglio?
Devi usare uno user-agent vuoto, come ti dicevo poc’anzi. Comunque ti ho scritto nel commento il contenuto del file ASX dove compare la riga
mms://
che puoi copiare e incollare. 😉Con:
wget -q -U “” “http://mediapolis.rai.it/relinker/relinkerServlet.mp4?cont=au0rdUD9jeceeqqEEqual&contenttype=wmv” -O – | strings
mi da: http://www.rai.tv/dl/RaiTV/2012/images/logo.png
Eh? 😯 L’ho appena provato di nuovo e funziona. Forse il tuo
wget
non ha molta simpatia per lo user-agent vuoto, prova a mettere tipo-U "a"
e vedi se va…Tipo così?
[code lang=text]
wget -q -U "a" "" "http://mediapolis.rai.it/relinker/relinkerServlet.mp4?cont=au0rdUD9jeceeqqEEqual&contenttype=wmv" -O – | strings
[/code]
scusa ma non sono molto eseprto di bash.
Eh ma togli la stringa vuota dopo
"a"
. O metti"a"
o metti""
, non tutte e due. 😀con
mi da:
Mmm sicuro di aver messo le virgolette giuste e non quelle “stupide” che WordPress mette qui nei commenti?
ho cambiato le virgolette e ora non da nessun output, perchè col tuo wget funziona e col mio no?
Forse perché non hai corretto il trattino – che WordPress modifica nei commenti, trasformandolo in un trattino “tipografico”. C’è un motivo se ho postato il comando di
wget
in forma di codice sorgente, altrimenti la parte che determina l’output a video-O -
non funziona. 🙂 Probabilmente ora nella tua home directory o nella cartella dove ti trovavi hai un file che si chiama “trattino” – il quale contiene il contenuto chewget
ha scaricato. 😀In conclusione, o digiti il comando o ti conviene copiarlo dai miei commenti, che credo abbiano virgolette e trattini a posto. 😉
hai ragione,
grazie tante per l’aiuto.
con il link di prima adesso funziona ma con qusto no perchè?
http://mediapolis.rai.it/relinker/relinkerServlet.mp4?cont=H3xqAJJtJ2ceeqqEEqual&contenttype=wmv
A me quel link funziona esattamente nello stesso modo dell’altro. Controlla se per caso non stai facendo qualche errore nel comando. 🙂
si dimenticavo di togliere amp;
Ciao andrea scuso se sfrutto la tua disponibilità, sto provando a scaricare lo streaming di cremona1. Ho trovato il manifest http://cremona1.econcept.it/live/cremona1_high.isml/manifest ma se lo uso con ismdownloader mi esce questo errore:
C’è modo di risolvere?
Per gli stream che usano AVC1 devi utilizzare ismdownloaderAVC1.
Grazie ora va!!