#!/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"