come lanciare automaticamente vdr e xine

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

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
davidea
Messaggi: 1279
Iscritto il: 16 ago 2009, 13:32
Località: Palermo
Contatta:

come lanciare automaticamente vdr e xine

Messaggio da davidea »

ragazzi, ora che ho la vdrbox in produzione, mi sorge un dilemma.....
come lanciare vdr ? ho uato un bellissimo runvdr.sh, che mi carica tutti i plugin e se vdr crasha me lo rilancia, ma attualmente lo eseguo come root da / etc / init.d / rcS
lo passo su .rclocal ?

che script usate per lanciare xine, e con che impostazioni ?
attualmente uso uno scriptino preso da yavdr , start-xine , con queste opzioni

XINEOPTS="-f -A alsa --post vdr --post vdr_video --post vdr_audio --verbose=2 --no-logo --no-splash --deinterlace -pq"

ma se malauguratamente vdr va' in crash, debbo lanciare lo scriptino a manina....

anche se lo script continene

while [ ! -e /tmp/vdr-xine/stream ] ; do sleep 1 ; done
/usr/bin/xine $XINEOPTS vdr:/tmp/vdr-xine/stream#demux:mpeg_pes

purtroppo con lo scripting bash sono a zero......
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: come lanciare automaticamente vdr e xine

Messaggio da ragno »

@davidea: cambiare la "posizione di lancio" non cambia nulla, a parte il fatto che da local hai il vantaggio (o svantaggio) che se sicuro che lo script viene avviato per ultimo...

Per funzionare bene, runvdr.sh deve effettuare un loop :lol:

:start
+ testa caricamento driver
+--> carica driver dvb se sono giu
+ testa caricamento xine
+--> carica xine se e' giu
- caricamento vdr
- killa xine
- unload driver
goto start

Questo e' il minestrone che posso passarti... :lol:

test caricamento driver, load ed unload...okkio che il test e' per la FF (dvb_ttpci)
loop principale vdr, kill e restart...
In pratica ti manca di gestire xine e adattarlo ai tuoi path...
N.B. etc => ect

Codice: Seleziona tutto

#!/bin/sh

# runvdr
#

#export LD_ASSUME_KERNEL=2.4.19

#export LANG=it_IT
#export LC_COLLATE=it_IT

function DriverLoaded()
{
  ISLOAD="`lsmod | grep -c 'dvb_ttpci'`"
  if [ $ISLOAD -eq 0 ] ; then
    echo "Driver da caricare"
    return 1
  else
    echo "driver caricati"
    return 0
  fi
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
# dvb-s
    modprobe dvb-core dvb_shutdown_timeout=0
    modprobe dvb-ttpci hw_sections=0
#    modprobe b2c2-flexcop-pci
#    modprobe budget-ci
# dvb-t
    modprobe saa7134 card=12 tuner=63 i2c_scan=1
 sleep 2
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
#    modprobe -r dvb-ttpci b2c2-flexcop-pci 
#    modprobe -r dvb-ttpci budget-ci
    modprobe -rf saa7134_dvb saa7134 tuner dvb_pll 
    modprobe -rf dvb-ttpci ves1x93 stv0299 
##    modprobe -r dvb-ttpci ves1x93 stv0299
##    modprobe -r saa7134_dvb saa7134 
#    modprobe -r budget-ci tda1004x 
#    rmmod -f budget-ci
#    modprobe -r budget-ci tda1004x 
#    modprobe -r budget tda1004x 
#    modprobe -r dvb-ttpci ves1x93 stv0299

#   rmmod dvb-ttpci saa7146_vv saa7146 videodev video_buf \
#   evdev video_buf l64781 nxt2002 bcm3510 ves1820 stv0299 tda8083 stv0297 mt312 mt352\
#   firmware_class ttpci_eeprom ves1x93 dvb_core >/dev/null 2>&1

}

KILL="/usr/bin/killall -q -TERM vdr"
VIDEODIR="/video"
CFGDIR="config"
VDRCFG="/ect/vdr"
VDRDIR="/usr/local/src/VDR"
VDRPRG="./vdr"

#contiene i parametri di vdr    
VDRPAR="--terminal=/dev/tty12 \
--lirc \
--log=1 \
--watchdog=30 \
--epgfile=$VDRCFG \
--config=$VDRCFG/$CFGDIR \
--video=$VIDEODIR \
--shutdown=$VDRCFG/vdroff.sh \
--timeset=$VDRCFG/timeset.sh \
"

# ogni $P_ contiene il comando per caricare il plugin con i suoi parametri
P_MPLAYER="-P'mplayer --mplayer=$VDRCFG/$CFGDIR/mplayer.sh --mount=$VDRCFG/$CFGDIR/mount.sh'"

# altri plugghi
P_ROTOR="-Protor"
# il resto e' segretissimo... :)

# assembla comando per lanciare vdr
VDRCMD="$VDRPRG $VDRPAR \
$P_MPLAYER \
$P_ROTOR '$*'"

# testa se deve caricare i driver
if ! DriverLoaded; then
   LoadDriver
fi

# main loop, mai fuori da questo... :)
while (true) do
      cd $VDRDIR

      # esegue vdr e tutto il suo ambaradan...
      eval "$VDRCMD"
      #  quando esce killa comunque vdr
      $KILL
      sleep 1
      echo "Unload DVB driver..."       
      UnloadDriver
      sleep 5
      LoadDriver
      echo "`date` restarting VDR"
done

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.
davidea
Messaggi: 1279
Iscritto il: 16 ago 2009, 13:32
Località: Palermo
Contatta:

Re: come lanciare automaticamente vdr e xine

Messaggio da davidea »

ho modificato la parte finale del mio runvdr cosi:

Codice: Seleziona tutto

while (true) do
      eval "$VDRCMD 2>>/var/log/vdr2.log"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      echo "`date` reloading DVB driver">>/var/log/vdr2.log
      $KILL $VDRPRG
      echo "`date` killato vdr">>/var/log/vdr2.log
      sleep 3
      killall -9 xine
      echo "`date` killato xine 1">>/var/log/vdr2.log
      sleep 2
      killall -9 xine
      echo "`date` killato xine 2">>/var/log/vdr2.log
      UnloadDriver
      LoadDriver
      echo "`date` riavviato vdr">>/var/log/vdr2.log
      echo "`date` restarting VDR"
      done
in modo che una volta uscito dall' esecuzione di vdr per qualsiasi motivo, fa' nell' ordine

kill di vdr se casomai ci fosse un' altra istanza attiva
kill di xine
kill di xine , non so perche' ma mi viene rilanciato subito dopo
unoad/load sono vuote
riavvio del processo di vdr

cio' succede sia che io riavvi vdr da telecomando che sia che esca per errore, in ogni caso, per la partenza all' avvio per ora lo lancio tramite scriptino / etc / init.d / vdr start/stop, ancora non mi fa' il restart

invece siccome come frontend uso xine, ho adottato questo scriptino , che come modificato ora va' che e' una bellezza

Codice: Seleziona tutto

XINEPRG="/usr/bin/xine"
XINEOPT="-D -V xv -f -r anamorphic  --post vdr_video --post vdr_audio --post upmix_mono --post vdr --verbose=2 \"vdr:/tmp/vdr-xine/stream#demux:mpeg_pes\""
XINECMD="$XINEPRG $XINEOPT"

while (true) do
      sleep 10
while [ ! -e /tmp/vdr-xine/stream ] ; do sleep 1 ; done
        eval "$XINECMD"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      $KILL $XINECMD
      sleep 5
      echo "`date` restarting xine"
      done

esso attende 10 secondi (in modo da stabilizzare vdr), comunque attende che venga creato il file dello stream, quindi fa' partire xine
la riga if test, non mi chiedete cosa faccia, non lo so!!!! 8)
eventualmente killa xine se ancora attivo /altra istanza
aspetta altri 5 secondi e reinizia

tale scriptino viene lanciato in automatico da gnome all' avvio.

finalmente mi funziona il riavvio e non devo sempre andare a spegnere e riaccendere la vdrbox
Rispondi