<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nerdsopolis &#187; Made by nerdsopolis</title>
	<atom:link href="http://www.nerdsopolis.net/wp/tag/made-by-nerdsopolis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nerdsopolis.net/wp</link>
	<description>Klaatu barada nikto!</description>
	<lastBuildDate>Wed, 18 Jan 2012 11:14:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Stickers</title>
		<link>http://www.nerdsopolis.net/wp/2008/09/05/stickers/</link>
		<comments>http://www.nerdsopolis.net/wp/2008/09/05/stickers/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 09:18:32 +0000</pubDate>
		<dc:creator>fry</dc:creator>
				<category><![CDATA[Cinema]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Fumetti]]></category>
		<category><![CDATA[Giochi di Ruolo]]></category>
		<category><![CDATA[Musica]]></category>
		<category><![CDATA[Tutti insieme appassionatamente]]></category>
		<category><![CDATA[adesivi]]></category>
		<category><![CDATA[Made by nerdsopolis]]></category>
		<category><![CDATA[spille]]></category>
		<category><![CDATA[stickers]]></category>

		<guid isPermaLink="false">http://nerdsopolis.wordpress.com/?p=412</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://nerdsopolis.files.wordpress.com/2008/09/promo_stickers.jpg"><img class="aligncenter size-large wp-image-413" style="border:0 none;" title="promo_stickers" src="http://nerdsopolis.files.wordpress.com/2008/09/promo_stickers.jpg?w=500" alt="" width="500" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdsopolis.net/wp/2008/09/05/stickers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Videoregistratolinux</title>
		<link>http://www.nerdsopolis.net/wp/2008/08/28/videoregistratolinux/</link>
		<comments>http://www.nerdsopolis.net/wp/2008/08/28/videoregistratolinux/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 13:06:35 +0000</pubDate>
		<dc:creator>fry</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Made by nerdsopolis]]></category>
		<category><![CDATA[pvr]]></category>
		<category><![CDATA[recorder]]></category>
		<category><![CDATA[registrazione]]></category>
		<category><![CDATA[scheda tv]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[v4l2]]></category>

		<guid isPermaLink="false">http://nerdsopolis.wordpress.com/?p=336</guid>
		<description><![CDATA[Dopo giorni di smanettamenti vari con la scheda tv analogica, in questo post vi propongo un piccolo script che mi sono creato per poter registrare e programmare registrazioni dalla tv tramite mencoder. Insomma mi sono creato un piccolo videoregistratore digitale, molto più comodo del caro vecchio VHS! Ma meno figo del betamax&#8230; Introduzione Prima di [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nerdsopolis.files.wordpress.com/2008/08/betamax.jpg"><img class="alignleft size-full wp-image-350" style="border:0 none;margin-left:2px;margin-right:2px;" src="http://nerdsopolis.files.wordpress.com/2008/08/betamax.jpg" alt="" width="274" height="384" /></a></p>
<p>Dopo giorni di smanettamenti vari con la scheda tv analogica, in questo post vi propongo un piccolo script che mi sono creato per poter registrare e programmare registrazioni dalla tv tramite mencoder. Insomma mi sono creato un piccolo videoregistratore digitale, molto più comodo del caro vecchio VHS! Ma meno figo del betamax&#8230;</p>
<h2>Introduzione</h2>
<p>Prima di tutto premetto che io in questo momento sul mio pc con ubuntu (hardy) per guardare normalmente la tv uso <a href="http://tvtime.sourceforge.net/" target="_blank">tvtime</a> che è davvero un&#8217;ottimo programma. Semplice da usare, con un bel menu OSD e una discreta dose di impostazioni smanettabili. Il limite però è che non registra e non fa nessun tipo di timeshifting! Nel caso voi abbiate (a differenza di me) una scheda tv DVB-T o DVB-S allora vi consiglio di usare <a href="http://kaffeine.kde.org/" target="_blank">Kaffeine</a>. Prima che si rompesse la mia, lo usavo ogni giorno e l&#8217;ho trovato veramente completo: EPG, registrazione immediata, programmata e timeshifting tutto in uno. Dato però che Kaffeine non sembra digerire la mia nuova (in realtà vecchia) scheda tv analogica, sono dovuto passare ad altro!</p>
<p>Una soluzione naturalmente da tenere in considerazione è quella di usare <a href="http://www.mythtv.org/" target="_blank">MythTV</a>. Per chi ancora (ma dove vivi?!) non lo sapesse MythTV è un programma completissimo che permette di creare un sistema completo per la visione della tv, con registrazione e timeshifting, la visione di divx/xvid, la navigazione su internet e tanto altro. Il tutto con un semplice telecomando. MythTV è sicuramente la soluzione più completa per chi vuole dedicare un pc all&#8217;uso specifico come PVR (una sorta di clone del TiVo o un Windows MCE venuto bene), ma nel caso in cui l&#8217;uso della tv è sporadico e la registrazione avviene solo in certe occasioni, il programma risulta a mio parere un po&#8217; troppo pesante ed invasivo (mille pacchetti e configurazioni eterne).</p>
<p><span id="more-336"></span></p>
<h2>Requisiti</h2>
<p>Lo script (recorder.sh) in pratica fa due cose: registra immediatamente dalla scheda tv oppure programma una registrazione futura.</p>
<p>I requisiti per poter usare questo script sono abbastanza semplici (per uno che usa la scheda tv sulla propria linux box): mencoder (che fa parte di <a href="http://www.mplayerhq.hu/" target="_blank">mplayer</a> ed è un favoloso compressore/decompressore/convertitore) e scantv (che fa parte di <a href="http://linux.bytesex.org/xawtv/" target="_blank">xawtv</a>).</p>
<h2>Configurazione e uso</h2>
<p>Veniamo dunque al sodo.</p>
<p>Scantv è un semplice script che esegue, come si intuisce dal nome, una scansione sulla tabella delle frequenze o su tutte le frequenze alla ricerca dei canali tv e li sintonizza in modo che possano essere usati dal software Xawtv che è invece un (piuttosto bruttino e datato) visualizzatore di tv.</p>
<p>Il primo step è dunque (nel caso non l&#8217;abbiate già fatto) creare una tabella dei canali:</p>
<blockquote><p>$ scantv -C /dev/vbi0 -o /home/francesco/.xawtv</p></blockquote>
<p>Da notare che io devo usare &#8220;-C /dev/vbi0&#8243; perchè di default scantv cerca solo su &#8220;/dev/vbi&#8221;. E che &#8220;/home/francesco&#8221; è la MIA home&#8230; metteteci la vostra! Ah, se volete una ricerca più completa usate anche il comando &#8220;-a&#8221;&#8230; però abbiate pazienza perchè così ci mette una vita!</p>
<p>Una volta conclusa la ricerca, aprendo il file .xawtv troverete una voce che collega un canale (in alcuni casi con il nome) ad una frequenza o un canale. Il canale non è altro che una frequenza prestabilita su una tabella che varia a seconda del paese. In linea di massima i canali tv sono sempre su un canale preciso. Se trovate la frequenza probabilmente si tratta di un canale locale o di qualcosa con una ricezione veramente pessima!</p>
<p>Ora vi consiglio di editare il file per eliminare i canali inutili e per mettere i nomi a quelli che non l&#8217;hanno. Per farlo vi basta usare un normale editor per le modifiche sul file .xawtv e xawtv per vedere il risultato. Ora passiamo alla registrazione!</p>
<p>NB. Purtroppo una limitazione piuttosto grave del sistema è che la scheda tv è accessibile solo da un processo per volta. Ciò significa che, se state guardando un canale (ad es. su tvtime) e fate contemporaneamente partire la registrazione (su un altro canale o anche sullo stesso), l&#8217;ultimo processo avviato esclude il precedente. Proprio come con un videoregistratore non possiamo cambiare canale mentre registriamo! E per vedere mentre si registra? Bè basta aprire il file video che il nostro fido recorder.sh sta creando con un player qualsiasi. In questo modo abbiamo anche una sorta di timeshifting dato che possiamo metterlo in pausa, mandarlo indietro o avanti (compatibilmente con la linea temporale!!) e farlo ripartire quando vogliamo mentre recorder.sh continua a salvare il flusso video.</p>
<p>L&#8217;uso dello script è piuttosto semplice:</p>
<blockquote><p>$ ./recorder.sh [channel] [seconds] [options] [start]</p></blockquote>
<p>Dove &#8220;channel&#8221; è il canale che trovate nel file che abbiamo creato prima (.xawtv), &#8220;seconds&#8221; sono i secondi della durata della registrazione, &#8220;start&#8221; è l&#8217;ora in HH:MM di inizio della registrazione. Come opzioni è possibile specificare &#8220;-f&#8221; per aprire immediatamente il file in corso di registrazione in mplayer, &#8220;-p&#8221; per programmare una registrazione futura (in tal caso è obbligatorio specificare anche &#8220;start&#8221;). Nel caso in cui &#8220;-p&#8221; non sia specificato la registrazione parte immediatamente, altrimenti crea una voce &#8220;cron&#8221; tramite il comando &#8220;at&#8221; che verrà eseguita nel momento prestabilito. Ad esempio:</p>
<blockquote><p>$ recorder.sh 56 3600 -p 12:50</p></blockquote>
<p>Metterà in coda una registrazione per le 12:50 sul canale 56 (che da me è Canale 5) della durata di 3600 secondi = 1 ora.</p>
<p>Lo script provvederà a creare un file, il cui nome è dato dal canale e dalla data e l&#8217;ora di inizio della registrazione, compresso in divx con l&#8217;audio in mp3. E il tutto in maniera automatica!</p>
<h2>Lo script nel dettaglio</h2>
<p>Naturalmente non mi aspetto che lo script funzioni o vi vada bene così com&#8217;è. Il mondo di linux, si sa, è bello perchè vario! Quindi a seconda della distro che state usando qualche impostazione potrebbe essere diversa&#8230; oppure la vostra scheda di acquisizione potrebbe funzionare in modo diverso&#8230; oppure ancora potreste volere aggiungere o togliere delle opzioni che io uso.</p>
<p>Dov&#8217;è il problema?! Basta smanettare sul codice!</p>
<p>In primo luogo premetto che alcune parti di questo script le ho fatte ispirandomi ad uno script simile che ho trovato da qualche parte su un forum (scusate ma non trovo più il link). Io però ho migliorato alcuni aspetti della compressione del video ed ho aggiunto una serie di opzioni, come il fatto di poter programmare la registrazione.</p>
<p>E&#8217; molto importante controllare che i riferimenti alla scheda video e a quella audio siano corretti. Nel mio caso l&#8217;output video arriva da &#8220;/dev/video0&#8243; e il sintonizzatore si trova su &#8220;/dev/vbi0&#8243;. Può darsi che a seconda della distro o a seconda del modulo usato per la vostra scheda queste devices siano in luoghi diversi. Potete controllare direttamente tramite mplayer se state usando gli indirizzi corretti. Ecco come:</p>
<blockquote><p>$ mplayer tv:// -tv driver=v4l2:input=1:device=/dev/video0:norm=PAL</p></blockquote>
<p>Un altro aspetto importante da considerare è l&#8217;input usato. Nel mio caso la scheda fornisce 3 input. Il primo (0) è l&#8217;ingresso composito, il secondo e il terzo (1 e 2) sono l&#8217;ingresso TV. Se selezionate un input sbagliato dovreste vedere nero o vedere del rumore video. Una modifica che probabilmente aggiungerò in futuro al mio script sarà la possibilità di impostare l&#8217;input in modo da poter usare la scheda per convertire vecchi vhs in digitale.</p>
<p>La seconda cosa importante da configurare (e che mi ha fatto impazzire) è l&#8217;imput audio. Ci sono due tipi di schede tv. Quelle che mandano l&#8217;audio direttamente su una periferica digitale e quelle che invece usano un cavetto di bypass. Di solito quest&#8217;ultime hanno un cavetto &#8220;jack maschio &#8211; jack maschio&#8221; che va collegato all&#8217;output della scheda tv e ad un input della scheda audio. In altri casi invece (come nella mia scheda) il bypass è interno e viene usato un cavetto che entra in uno degli input CD della scheda audio.</p>
<p>Nel mio caso se apro &#8220;tvtime&#8221;, l&#8217;audio viene direttamente dall&#8217;ingresso CD della scheda audio. Quindi devo intercettarlo dalla scheda audio attraverso ALSA per poterlo registrare. Una prova che potete fare per vedere se anche la vostra scheda funziona come la mia è aprire un canale qualsiasi in &#8220;tvtime&#8221; o in &#8220;xawtv&#8221; (o simili) e mettere in muto il canale CD nel mixer. Non dovreste sentire più nulla dalla tv.</p>
<p>Ora lanciate questo comando:</p>
<blockquote><p># aplay /dev/dsp1</p></blockquote>
<p>Dove naturalmente &#8220;dsp1&#8243; potrebbe essere nel vostro caso &#8220;dsp0&#8243; o &#8220;dsp&#8221;&#8230;. Comunque dovreste sentire in qualità abbastanza pessima l&#8217;audio della vostra scheda tv. Bene quell&#8217;indirizzo corrisponde a &#8220;hw.[x]&#8221; in alsa.</p>
<p>Ok adesso vediamo lo script:</p>
<pre>#!/bin/bash

echo "Recorder.sh a simple script for mencoder - version 1.2 (05/10/08)"
echo "Made by Ermete Trismegisto (www.nerdsopolis.org)"
echo "-------------------------------------"

if [ ! $1 ] &amp; [ ! $2 ]
then
	echo "Usage: $0 [channel] [seconds] [option] [start]"
        echo "-------------------------------------"
	echo "Channel = channel number -&gt; see scantv output"
	echo "Seconds = record lenght in seconds"
	echo "Option: -f = follow (see the file while recording)"
	echo "	      -p = planned (plan a recording)"
	echo "Start = time in HH:MM of start"
        echo "-------------------------------------"
	echo "Example: recorder.sh 56 3600 12:50"
	echo "It will plan a recording of 1 hour at 12:50 on channel 56"
        echo "-------------------------------------"
        exit
fi

WIDTH=640
HEIGHT=480
MENCODER=/usr/bin/mencoder
AT=/usr/bin/at
FILE="capture_${1}_$(date +%Y-%m-%d_%H:%M:%S).avi"
AUDIO="-oac mp3lame -lameopts cbr:br=128:mode=0"
VIDEO="-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500:vhq -vf pp=lb"
DSP="alsa:adevice=hw.1"
TV=" -tv driver=v4l2:width=$WIDTH:height=$HEIGHT:input=1:device=/dev/video0:audiorate=32000:norm=PAL:channel=${1}:$DSP"
if [ "$3" = "-f" ]; then
	if [ $4 ]; then
		echo "ERROR: Start time is valid only for -p option"
		exit
	fi
	echo "Recording on channel ${1} for ${2} seconds... opening player"
	amixer set CD mute
	$MENCODER tv:// $TV $VIDEO $AUDIO -endpos ${2} -ffourcc divx -o $FILE &amp; sleep 5 ; gmplayer $FILE
	amixer set CD unmute
	exit
fi
if [ "$3" = "-p" ]; then
	if [ ! $4 ]; then
		echo "ERROR: Start time missing"
		exit
	fi
	echo "Planned recording on channel ${1} at ${4} for ${2} seconds"
	echo amixer set CD mute | at ${4}
	echo $MENCODER tv:// $TV $VIDEO $AUDIO -endpos ${2} -ffourcc divx -o $FILE | at ${4}
	exit
fi
if [ !$3 ]; then
	echo "Instant recording on channel ${1} for ${2} seconds"
	amixer set CD mute
	$MENCODER tv:// $TV $VIDEO $AUDIO -endpos ${2} -ffourcc divx -o $FILE
	amixer set CD unmute
	exit
fi</pre>
<p>Per poterlo usare vi basta copiarlo e incollarlo in file di testo e salvarlo come &#8220;recorder.sh&#8221;. Naturalmente ricordatevi dove lo salvate per poi poterlo eseguire!</p>
<p>Le impostazioni per la compressione dell&#8217;audio sono dentro alla variabile &#8220;AUDIO&#8221; mentre quelle per il video nella variabile &#8220;VIDEO&#8221;. Poi c&#8217;è il &#8220;DSP&#8221; (che dicevamo è la periferica audio) e &#8220;TV&#8221; che è la scheda da cui acquisire. Qualunque modifica allo script andrebbe fatta dunque in queste 4 variabili.</p>
<p>Come dicevo all&#8217;inizio, per finire, lo script può registrare istantaneamente oppure, se è stato specificato un&#8217;orario, mettere in coda l&#8217;azione usando il comando AT. Se viene impostata un&#8217;azione futura, è sempre possibile controllare che l&#8217;azione sia stata correttamente messa in coda da AT digitando:</p>
<blockquote><p>$ atq</p></blockquote>
<p><span style="text-decoration:line-through;">Ci sono alcune piccole cose che ho intenzione di modificare in questo script, come ad esempio la possibilità di scrivere la durata del programma in minuti o ore (adesso accetta solo secondi, quindi 1 ora è 3600 secondi) e la possibilità di fargli aprire direttamente il player per seguire la registrazione. Un&#8217;altra funzione utile potrebbe essere quella di fargli mettere in &#8220;mute&#8221; il canale del CD IN della scheda audio. Infatti adesso tutte le volte che verrà avviato mencoder partirà anche l&#8217;audio proveniente dalla TV.</span></p>
<p>Con l&#8217;aggiornamento alla versione 1.1 ho aggiunto due funzioni: la prima (-f) che apre automaticamente gmplayer sul file che si sta salvando; la seconda (attraverso amixer) che mette in muto il canale CD della scheda audio. In questo modo non si sente la tv mentre la si registra!</p>
<p>Quindi un uso tipico, in perfetto stile timeshifting è:</p>
<blockquote><p>./recorder.sh 25 3600 -f</p></blockquote>
<p>In questo modo recorder.sh farà partire la registrazione sul canale 25 per una durata massima di 1 ora e provvederà ad aprire mplayer e selezionare il file che si sta creando. Ora potete mettere in pausa la registrazione e riprenderla liberamente mentre lo script continua a registrare.</p>
<p><span style="text-decoration:line-through;">Se viene programmata una registrazione, ad esempio di notte, ricordatevi sempre di spegnere le casse del PC altrimenti potrebbe venirvi un infarto quando parte l&#8217;audio a tutto volume!</span></p>
<h2>Conclusioni</h2>
<p>Nel caso abbiate proposte di modifica o suggerimenti per farlo funzionare meglio, siate liberi di lasciare dei commenti!</p>
<p>Ah, l&#8217;ispirazione di questo script mi è stata data da questo ottimo post: <a href="http://doppiavu.wordpress.com/2007/11/21/trasformare-il-pc-in-un-videoregistratore/" target="_blank">link</a>.</p>
<p><span style="color:#ff0000;">[post originale: 28 agosto 2008 - aggiornato il 10 ottobre 2008]</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdsopolis.net/wp/2008/08/28/videoregistratolinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

