Jan
Registrare uno stream automaticamente - #1
Posted by muse as Linux, Streaming, Vlc
Uno dei miei più grossi problemi è sempre stato quello di ricordarmi della mia trasmissione radiofonica preferita (eh si, una vita al limite la mia), “Cordialmente” su radio deejay.. un pò perchè va in onda il lunedì sera alle 22 e 30 in concomitanza spesso con altri programmi (tipo Lost), un pò perchè di solito a quell’ora sono davanti al pc e il tempo vola..

Dopo l’ennesima puntata persa, ho deciso di impostare Cron su Linux per registrare lo stream di RadioDJ automaticamente ogni lunedì dalle 22e30 alle 24…
La scelta sull’applicazione da utilizzare è ricaduta ovviamente su vlc, come fonte ho preso in prestito lo stream di kataweb, dato che lo uso da anni per ascoltare radio dj al pc e si è sempre dimostrato affidabile, inoltre non occupa molta banda, solo 32 kbps, che vi assicuro basta e avanza..
Provando a lanciare il comando vlc mms://live.kataweb.mediaserver.it/radiodeejay dopo pochi secondi si dovrebbe iniziare a sentire l’audio di radio dj, a patto di avere una sessione grafica aperta, il comando infatti prevede l’apertura di vlc in modalità gui (con interfaccia grafica).
Per eseguire la registrazione dello stream in background occorre specificare alcuni parametri di vlc:
vlc mms://live.mediaserver.kataweb.it/radiodeejay –sout file/asf:cordialmente.asf -d
dove -d consente di eseguire vlc in background senza interfaccia grafica e il parametro –sout file/muxer:nomefile.ext indica a vlc di indirizzare l’output su file, in questo caso senza transcoding, col formato (muxer) desiderato.
Nel caso in questione, lo stream è trasmesso con codifica wma2, ho scelto quindi il formato compatibile asf in attesa che vengano risolti alcuni problemini di vlc 0.86 con il transcoding in mp3.
Ora che il comando è pronto e collaudato, si può inserirlo in Cron, lanciando crontab -e e inserendo due entry: una serve per far partire vlc e l’altra serve a fermarlo:
# m h dom mon dow command
30 22 * * 1 vlc mms://live.mediaserver.kataweb.it/radiodeejay –sout file/asf:cordialmente.asf -d
01 00 * * 2 killall vlc
La registrazione inizia alle 22e30 di ogni lunedì e finisce a mezzanotte e un minuto, cioè alle 00e01 del martedì successivo. Questo comando va bene se non stiamo usando altre istanze di vlc altrimenti bisognerebbe ricorrere ad altri stratagemmi per terminare solo il processo desiderato.
Nel mio caso ho voluto fare un passo in più.. solitamente nomino i file delle registrazioni in modo da riportare la data della trasmissione, ad esempio “cordialmente29ott07.asf” e così via, ed ho pensato quindi di creare un piccolo script radiodeejay.sh per automatizzare anche la creazione del nome del file in base alla data corrente al momento delle registrazione, utilizzando il comando date di linux:
#!/bin/sh
giorno=$(date +%d)
mese=$(date +%b)
anno=$(date +%y)
titolo=cordialmente$giorno$mese$anno.asf
/usr/bin/vlc mms://live.mediaserver.kataweb.it/radiodeejay –sout file/asf:$titolo -d
Quindi in questo caso la entry di cron dovrà invocare non più il comando per vlc ma lo script:
# m h dom mon dow command
30 22 * * 1 /home/muse/radiodeejay.sh
01 00 * * 2 killall vlc
A questo punto potrebbero essere inseriti facilmente altri comandi in sequenza, ad esempio per convertire il formato del file e poi copiarlo in una directory di backup.
Facendo qualche prova mi sono accorto pero’ che i file .asf salvati da vlc non sono “seekabili” in quanto, molto probabilmente, killando brutalmente vlc durante il salvataggio dello stream gli headers del formato vanno a farsi benedire e si perde cosi’ la possibilita’ di scorrere il file avanti o indietro.. l’unico modo per risolvere il problema e’ di passare in qualche modo il comando “stop” a vlc e solo successivamente fermare il processo..
Devo risolvere la questione entro lunedi’ o il mondo e’ spacciato. Stay tuned !
Tags
bttv cctv conexant Cron Dvr elevator IPv4 IPv6 Linux music Ripe55 Routers Scheduling Song Song title Streaming Vlc waiting room
Categories
Blogroll
Friends