Errore con streamdev: pipe interrotta

Forum principale per problemi di compilazione, installazione, configurazione etc.

Moderatori: ragno, tapino, alez, zulu, davidea

stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Salve a tutti,
ho un mini itx con ubuntu 10.04 e vdr: tutto funzionante.

Vorrei fare streaming verso i computer che ho in camera e quindi ho installato il plugin streamdev: facendo streaming con TS tutto funziona.

Dato che uso la wireless vorrei comprimere il flusso video video con mencoder ma ho dei problemi. In pratica quando clicco sul canale non vedo niente e sul syslog vedo comparire:

........
Oct 5 21:13:48 vdr vdr: [1769] receiver on device 1 thread started (pid=1241, tid=1769)
Oct 5 21:13:48 vdr vdr: [1770] TS buffer on device 1 thread started (pid=1241, tid=1770)
Oct 5 21:13:48 vdr vdr: [1241] switching to channel 27
Oct 5 21:13:49 vdr vdr: [1765] ERROR: write failed: Pipe interrotta
Oct 5 21:13:49 vdr vdr: [1765] ERROR: write failed: Pipe interrotta
Oct 5 21:13:49 vdr vdr: [1770] TS buffer on device 1 thread ended (pid=1241, tid=1770)
.......


Il file externremux.sh è il seguente:
#!/bin/sh
rm -f /tmp/out.avi
/usr/bin/mkfifo /tmp/out.avi
cat /tmp/out.avi & /usr/bin/mencoder -ovc lavc -oac lavc -lavcopts vbitrate=400:abitrate=64 -vf scale=420:-2 -o /tmp/out.avi -- - &>/tmp/out.log

Chi mi da una mano?
GRAZIE!!!
davidea
Messaggi: 1279
Iscritto il: 16 ago 2009, 13:32
Località: Palermo
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da davidea »

ciao e benvenuto!

domanda ovvia, mencoder e' installato??

/tmp/out.log cosa ti dice?
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Mencoder è installato e il file out.log è vuoto.
Entrambi i file out.log e out.avi sono a 0 byte.

Ho provato a cambiare lo script externremux.sh mettendo solamente

#!/bin/sh
rm -f /tmp/out.avi
/usr/bin/mkfifo /tmp/out.avi

ma sul syslog vedo il solito errore.

Da qui deduco che non è un problema di mencoder, dico bene??
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da ragno »

Hai dato un'occhiata qui viewtopic.php?t=1271

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

GIà visto ma non credo sia il mio caso.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Errore con streamdev: pipe interrotta

Messaggio da alez »

Una banalità, oltre a mencoder suggerito da ragno: externremux.sh è nel posto giusto? inoltre è eseguibile?
Ciao alez
davidea
Messaggi: 1279
Iscritto il: 16 ago 2009, 13:32
Località: Palermo
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da davidea »

nel mio externalremux, che e' un po' piu' elaborato ho :

$CMDx264=250$SNDmx264 $RES 320 $OUT -- - &>$LOG ;;

dove

$CMDx264 e' mencoder -ovc x264 -x264encopts bitrate
$SNDmx264 e' :subq=4:bframes=2:b_pyramid:weight_b -oac mp3lame -lameopts preset=15:mode=3
$RES e' -vf scale -zoom -xy
TMP e' /tmp/externremux-${RANDOM:-$$}
$OUT e' -o $TMP/out.avi
$LOG e' $TMP/out.log

quindi

mencoder -ovc x264 -x264encopts bitrate=250:subq=4:bframes=2:b_pyramid:weight_b -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy -o /tmp/externremux-${RANDOM:-$$}/out.avi -- - &> /tmp/externremux-${RANDOM:-$$}/out.log


e out.log e' pieno
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Lo script è eseguibile e viene caricato dal plugin, infatti facendo un ps ax|grep vdr vedo

/usr/bin/vdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s /usr/lib/vdr/vdr-shutdown.wrapper -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 2001 --lirc -P sc -P streamdev-server -r /var/lib/vdr/plugins/streamdev/externremux.sh -P text2skin -P skinenigmang --logodir=/usr/share/vdr-enigmang-icons --epgimages=/var/cache/vdr/epgimages -P yaepghd -P xineliboutput --local=none --primary --remote=127.0.0.1:37890 --vfat -w 60

e lo script externremux è in /var/lib/vdr/plugins/streamdev/

Che può essere?
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da ragno »

stiaga ha scritto:
Che può essere?
Che mkfifo non crea la pipe fifo oppure mencoder va in crash allo startup per qualche ragione...
Dovresti lanciare vdr manualmente da console e poi vedere cosa accade quando parte mencoder...
Oppure prendi una registrazione e dalla in pasto a mencoder...e vedi quello che succede.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Errore con streamdev: pipe interrotta

Messaggio da alez »

Hai provato il mio externremux come ti ha consigliato ragno?
Ciao alez
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Sì ho provato ma niente.
Non credo che sia un problema di mencoder, infatti (come già detto prima) anche se le levo la stringa di mencoder il problema si presenta lo stesso.
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da ragno »

stiaga ha scritto:Sì ho provato ma niente.
Non credo che sia un problema di mencoder, infatti (come già detto prima) anche se le levo la stringa di mencoder il problema si presenta lo stesso.
Prova a verificare, specificando col parametro -r il path dello script per l'externalremux...
In ogni caso (in extern.c):

Codice: Seleziona tutto

cTSExt::cTSExt(cRingBufferLinear *ResultBuffer, const cServerConnection *Connection, const cChannel *Channel, const int *Apids, const int *Dpids):
m_ResultBuffer(ResultBuffer),
m_Active(false),
m_Process(-1),
m_Inpipe(0),
m_Outpipe(0)
{
int inpipe[2];
int outpipe[2];

if (pipe(inpipe) == -1) {
LOG_ERROR_STR("pipe failed");
return;
}

if (pipe(outpipe) == -1) {
LOG_ERROR_STR("pipe failed");
close(inpipe[0]);
close(inpipe[1]);
return;
}

if ((m_Process = fork()) == -1) {
LOG_ERROR_STR("fork failed");
close(inpipe[0]);
close(inpipe[1]);
close(outpipe[0]);
close(outpipe[1]);
return;
}
L'errore viene generato dalla seconda if

1) mkfifo non crea correttamente la pipe
2) vdr non ha permessi per accedere alla pipe in scrittura

ciao

p.s. ci prepariamo ad arrampicarci sugli specchi... :)
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Il paramentro r glielo sto già passando.
In extern.c sinceramente non ci ho guardato.
Delle 2 ipotesi credo sia più la seconda, ossia che l'utente vdr non riesce a scrivere sulla pipe.
Ma il plugin streamdev ultilizza lo stesso utente di vdr?
Ora che mi ricordo avevo già provato a fare in modo che creasse la pipe in modalità 0777 con il l'opzione -m, ma ho ottenuto lo stesso risultato.

Inoltre come posso fare a testare se mkfifo funziona correttamente?
Digitando il comando da riga di comando non mi restituisce nessun errore.

Io penso che stiamo arrivando alla soluzione invece!
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Errore con streamdev: pipe interrotta

Messaggio da ragno »

stiaga ha scritto:Il paramentro r glielo sto già passando.
In extern.c sinceramente non ci ho guardato.
Delle 2 ipotesi credo sia più la seconda, ossia che l'utente vdr non riesce a scrivere sulla pipe.
Ma il plugin streamdev ultilizza lo stesso utente di vdr?
Ora che mi ricordo avevo già provato a fare in modo che creasse la pipe in modalità 0777 con il l'opzione -m, ma ho ottenuto lo stesso risultato.

Inoltre come posso fare a testare se mkfifo funziona correttamente?
Digitando il comando da riga di comando non mi restituisce nessun errore.

Io penso che stiamo arrivando alla soluzione invece!
Poiche' non hai specificato la distro che stai utilizzando, suppongo ubunto, hai 2 possibilita':

1) testare tutto lanciando da console lo script che start vdr:

Codice: Seleziona tutto

sudo runvdr.sh
2) "sudare" mkfifo in maniera che crei la pipe con i permessi per l'utente standard vdr

Codice: Seleziona tutto

echo tuapassword|sudo -S rm -f /tmp/out.avi
echo tuapassword|sudo -S /usr/bin/mkfifo --mode=0666 /tmp/out.avi 
ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
stiaga
Messaggi: 9
Iscritto il: 05 ott 2010, 21:19

Re: Errore con streamdev: pipe interrotta

Messaggio da stiaga »

Ho provato a far girare vdr con utente root ma niente, nessun risultato.
Può darsi che sia qualche plugin che rompe le scatole?
Rispondi