Hi,
Entgegen dem Threadtitel möchte ich in yavdr-0.4 erstmal nur VdrAufnahmen zu mpg (später dann auch zu mp4) konvertieren - dazu hab ich mir folgendes Script geschrieben;
#!/bin/sh
RECDIR=`dirname $1`
USER=vdr
GROUP=vdr
JAVA=/usr/bin/java
PX=/usr/bin/projectx
PXJAR=/usr/share/java/ProjectX.jar
PXINI=/var/lib/vdr/plugins/burn/ProjectX.ini
MPLEX=/usr/bin/mplex
NICE=/usr/bin/nice
SVDRPSEND=/usr/bin/svdrpsend
VIDEOFILE="*.mpv"
AUDIOFILE_AC3="*.ac3"
AUDIOFILE1="*[!\-02].mpa"
AUDIOFILE2="*[\-02].mpa"
MPG="*.mpg"
CONVERTDIR=/media/sdb1/yavdr/workingdir/handbrake/convert
LOGDIR=/media/sdb1/yavdr/workingdir/handbrake/log
LOGFILE=$LOGDIR/handbrake_convert_mp4.log
## Falls vorhanden, altes Logfile loeschen
if [ -e $LOGFILE ]; then
rm $LOGFILE
fi
## Logfile fuer alle Ausgaben anlegen
#exec >$LOGFILE; exec 2>&1
cd $CONVERTDIR
## Eventuell vorhandene Altlasten loeschen
for j in $VIDEOFILE $AUDIOFILE_AC3 $AUDIOFILE1 $AUDIOFILE2 $MPG ; do
$NICE -n 19 rm -f "${j}"
done
## Demuxing
cd $RECDIR
$SVDRPSEND -d localhost "MESG ! Demuxen mit ProjectX startet ! "
$NICE -n 19 $PX -ini $PXINI -out $CONVERTDIR $1/*.ts -demux >/dev/null
if [ "$?" = "0" ] ; then
$SVDRPSEND -d localhost "MESG ! Demuxen erfolgreich beendet ! "
# echo "Demuxen erfolgreich beendet"
else
$SVDRPSEND -d localhost "MESG !!! Abbruch, Demuxen fehlgeschlagen !!! " && exit 1
# echo "ABBRUCH, Demuxen fehlgeschlagen" && exit 1
fi
## Muxing
## mit 3 Tonspuren (*.ac3 dolby, *.mp2 stereo de, *02.mp2 stereo anderssprachig)
if [ -e $VIDEOFILE -a -e $AUDIOFILE_AC3 -a -e $AUDIOFILE1 -a -e $AUDIOFILE2 ]; then
echo "MPG mit 3 Tonspuren wird erstellt"
$NICE -n 19 $MPLEX -f 9 -o three.mpg $VIDEOFILE $AUDIOFILE_AC3 $AUDIOFILE1 $AUDIOFILE2 2>&1 | tee $LOGFILE
fi
## mit 2 Tonspuren (*.ac3 dolby, *.mp2 stereo de oder anderssprachig)
if [ -e $VIDEOFILE -a -e $AUDIOFILE_AC3 -a -e $AUDIOFILE1 -a ! -e $AUDIOFILE2 ]; then
echo "MPG mit 2 Tonspuren wird erstellt"
$NICE -n 19 $MPLEX -f 9 -o two.mpg $VIDEOFILE $AUDIOFILE_AC3 $AUDIOFILE1 2>&1 | tee $LOGFILE
fi
## mit 2 Tonspuren (*.mp2 stereo de, *02.mp2 stereo anderssprachig)
if [ -e $VIDEOFILE -a ! -e $AUDIOFILE_AC3 -a -e $AUDIOFILE1 -a -e $AUDIOFILE2 ]; then
echo "MPG mit 2 Tonspuren wird erstellt"
$NICE -n 19 $MPLEX -f 9 -o two.mpg $VIDEOFILE $AUDIOFILE1 $AUDIOFILE2 2>&1 | tee $LOGFILE
fi
## mit 1 Tonspur (*.mp2 stereo de oder anderssprachig)
if [ -e $VIDEOFILE -a ! -e $AUDIOFILE_AC3 -a -e $AUDIOFILE1 -a ! -e $AUDIOFILE2 ]; then
echo "MPG mit 1 Tonspuren wird erstellt"
$NICE -n 19 $MPLEX -f 9 -o one.mpg $VIDEOFILE $AUDIOFILE1 2>&1 | tee $LOGFILE
fi
if [ "$?" = "0" ] ; then
$SVDRPSEND -d localhost "MESG ! Muxen erfolgreich beendet ! "
# echo "Muxen (MPG Erstellung) erfolgreich beendet"
for j in $VIDEOFILE $AUDIOFILE_AC3 $AUDIOFILE1 $AUDIOFILE2 ; do
$NICE -n 19 rm -f "${j}"
done
else
$SVDRPSEND -d localhost "MESG !!! Abbruch, Muxen fehlgeschlagen !!! " && exit 1
# echo "ABBRUCH, Muxen (MPG Erstellung) fehlgeschlagen" && exit 1
fi
exit
Alles anzeigen
Das Script is klar noch lange nicht fertig (kommt später Titelübergabe dazu etc.. vielliecht auch handbrake um zu mp4 zu wandeln)
Ich hab das Script erstmal handbrake_convert_mp4.sh benannt und es nach /usr/bin gelegt, es gehört dem User und der Gruppe vdr
und die Verzeichnisse in die es schreibt gehören auch alle dem User und der Gruppe vdr
Aufgerufen wird das Script mittels dem Eintrag;
Handbrake Convert {
Handbrake Convert ... : true
-Vdr zu Mp4 : screen -dm sh -c "/usr/bin/handbrake_convert_mp4.sh"
}
in der /etc/vdr/command-hooks/reccmds.custom.conf also über die reccmds.conf
Nun ist mein Problem aber wenn ich das Script aus dem Vdr heraus anwerfe funktioniert das nicht ProjectX startet kurz und beendet dann auch gleich
und es wird auch nichtmal ne Fehlermeldung ausgegeben.
Ändere ich aber die folgende Zeile im Script;
zu dieser;
$NICE -n 19 $PX -ini $PXINI -out $CONVERTDIR /srv/vdr/video.00/The_Mechanic/2012-09-10.22.05.83-0.rec/*.ts -demux >/dev/null
also geb quasi den echten Pfad zu ner .ts an dann funktioniert das Ganze auch über die reccmds.conf tadellos.
Wie also kann ich ProjectX den Pfad so übegeben das es funktioniert wenn ich mich im Vdr auf ne Aufnahme stelle auf Befehle gehe und das Script so anwerfe ?
Früher mal hat das so funktioniert mit;
und $1
Hab ein ähnliches Script auf nem alten Vdr am Laufen und da funktioniert das so, hier aber will das nicht klappen.
Hab auch mal ein echo eingebaut also;
echo $RECDIR = Verzeichnis > /home/user/check.txt
echo $1 = Verzeichnis >> /home/user/check.txt
aber in den Variablen $RECDIR und $1 steht scheinbar tatsächlich nix drin deshalb kann das so ja nicht funktionieren.
Gruss
Bert