Errore con streamdev: pipe interrotta
Moderatori: ragno, tapino, alez, zulu, davidea
Errore con streamdev: pipe interrotta
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!!!
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!!!
Re: Errore con streamdev: pipe interrotta
ciao e benvenuto!
domanda ovvia, mencoder e' installato??
/tmp/out.log cosa ti dice?
domanda ovvia, mencoder e' installato??
/tmp/out.log cosa ti dice?
Re: Errore con streamdev: pipe interrotta
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??
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??
Re: Errore con streamdev: pipe interrotta
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.
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.
Re: Errore con streamdev: pipe interrotta
GIà visto ma non credo sia il mio caso.
Re: Errore con streamdev: pipe interrotta
Una banalità, oltre a mencoder suggerito da ragno: externremux.sh è nel posto giusto? inoltre è eseguibile?
Ciao alez
Re: Errore con streamdev: pipe interrotta
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
$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
Re: Errore con streamdev: pipe interrotta
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?
/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?
Re: Errore con streamdev: pipe interrotta
Che mkfifo non crea la pipe fifo oppure mencoder va in crash allo startup per qualche ragione...stiaga ha scritto:
Che può essere?
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.
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.
Re: Errore con streamdev: pipe interrotta
Hai provato il mio externremux come ti ha consigliato ragno?
Ciao alez
Re: Errore con streamdev: pipe interrotta
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.
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.
Re: Errore con streamdev: pipe interrotta
Prova a verificare, specificando col parametro -r il path dello script per l'externalremux...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.
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;
}
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.
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.
Re: Errore con streamdev: pipe interrotta
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!
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!
Re: Errore con streamdev: pipe interrotta
Poiche' non hai specificato la distro che stai utilizzando, suppongo ubunto, hai 2 possibilita':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!
1) testare tutto lanciando da console lo script che start vdr:
Codice: Seleziona tutto
sudo runvdr.sh
Codice: Seleziona tutto
echo tuapassword|sudo -S rm -f /tmp/out.avi
echo tuapassword|sudo -S /usr/bin/mkfifo --mode=0666 /tmp/out.avi
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.
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.
Re: Errore con streamdev: pipe interrotta
Ho provato a far girare vdr con utente root ma niente, nessun risultato.
Può darsi che sia qualche plugin che rompe le scatole?
Può darsi che sia qualche plugin che rompe le scatole?