74 lines
2.1 KiB
Bash
74 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
if [ "$#" -ne 2 ]; then
|
|
echo "usage ts2mp4.sh [path to vdr recordings] [path to movies]";
|
|
exit 1;
|
|
fi
|
|
|
|
if [ ! -d $1 ]; then
|
|
echo "vdr recordings directory not valid: $1";
|
|
exit 1;
|
|
fi
|
|
|
|
if [ ! -d $2 ]; then
|
|
echo "movie directory not valid: $2";
|
|
exit 1;
|
|
fi
|
|
|
|
echo "vdr recordings directory: $1";
|
|
echo "movie directory: $2";
|
|
|
|
echo "changing into vdr recordings directory '$1'";
|
|
cd $1;
|
|
|
|
echo `pwd`
|
|
|
|
FILE_LIST="$1/tompg.lst"
|
|
while IFS= read -r LINE
|
|
do
|
|
echo "processing '$LINE'";
|
|
cd "$LINE";
|
|
for j in *.rec; do
|
|
cd $j;
|
|
BASENAME=00001;
|
|
INFO_FILE=info
|
|
if [ -f 001.vdr ]; then
|
|
BASENAME=001;
|
|
INFO_FILE=info.vdr
|
|
fi
|
|
MOVIENAME=$(sed -n -e 's/^T \(.*\)$/\1/p' $INFO_FILE);
|
|
if [ ! -f "$2/$MOVIENAME/$MOVIENAME.mkv" ]; then
|
|
echo `pwd`
|
|
|
|
echo "BN $BASENAME"
|
|
echo "demuxing $MOVIENAME"
|
|
if [ $BASENAME == "001" ]; then
|
|
FILENAMES=$(ls 00*.vdr | paste -sd " " -);
|
|
else
|
|
FILENAMES=$(ls *.ts | paste -sd " " -);
|
|
fi
|
|
projectx -demux $FILENAMES -name $BASENAME -cut marks.bytepos
|
|
|
|
echo "converting $MOVIENAME";
|
|
|
|
if [ ! -d "$2/$MOVIENAME" ]; then
|
|
mkdir "$2/$MOVIENAME";
|
|
fi
|
|
|
|
if [ -f "$BASENAME.ac3" ]; then
|
|
echo "mplex -f 8 -o \"$MOVIENAME.mpg\" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v";
|
|
mplex -f 8 -o "$MOVIENAME.mpg" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v;
|
|
else
|
|
echo "mplex -f 8 -o \"$MOVIENAME.mpg\" $BASENAME.mp2 $BASENAME.m2v";
|
|
mplex -f 8 -o "$MOVIENAME.mpg" $BASENAME.mp2 $BASENAME.m2v;
|
|
fi
|
|
echo "ffmpeg -nostdin -i \"$MOVIENAME.mpg\" -c:v libx264 -c:a aac \"$2/$MOVIENAME/$MOVIENAME.mkv\"";
|
|
ffmpeg -nostdin -i "$MOVIENAME.mpg" -c:v libx264 -c:a aac "$2/$MOVIENAME/$MOVIENAME.mkv";
|
|
else
|
|
echo "video file $MOVIENAME.mkv already exists; skipping";
|
|
fi
|
|
cd ..;
|
|
done;
|
|
cd ..;
|
|
done < "$FILE_LIST"
|