61 lines
1.9 KiB
Bash
61 lines
1.9 KiB
Bash
if [ "$#" -ne 2 ]; then
|
|
echo "usage episodes2mkv.sh [path to vdr recording] [path to movies]";
|
|
exit 1;
|
|
fi
|
|
|
|
if [ ! -d "$1" ]; then
|
|
echo "vdr recording 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 `pwd`
|
|
|
|
readarray -t LINES < "$1/episodes.lst"
|
|
|
|
echo "lines ${#LINES[@]}";
|
|
|
|
FILE_LIST="$1/episodes.lst"
|
|
for LINE in "${LINES[@]}"; do
|
|
#while IFS= read -r LINE
|
|
#do
|
|
echo "processing '$LINE'";
|
|
cd "$1/$LINE";
|
|
MOVIENAME=$(sed -n -e 's/^T \(.*\)$/\1/p' info);
|
|
EPISODE=$(sed -n -e 's/^S \(.*\)$/\1/p' info);
|
|
BASE_PATH="$2/$MOVIENAME/$EPISODE"
|
|
DEST_NAME="$2/$MOVIENAME/$EPISODE.mkv"
|
|
TRIMMED_NAME="$MOVIENAME.trimmed.ts"
|
|
if [ ! -f "$DEST_NAME" ]; then
|
|
echo "converting $MOVIENAME - $EPISODE";
|
|
STAMPS=($(sed -n -e 's/^\([0-9:]\+.[0-9]\{2\}\).*$/\1/p' marks))
|
|
if [ "${#STAMPS[@]}" -ne "2" ]; then
|
|
echo "more than two cut marks found; skipping";
|
|
echo "${#STAMPS[@]}";
|
|
exit 1;
|
|
fi;
|
|
echo ${STAMPS[0]}
|
|
echo ${STAMPS[1]}
|
|
FILENAMES=$(ls *.ts | paste -sd "|" -);
|
|
# if [ ! -d "$2/$MOVIENAME" ]; then
|
|
# echo mkdir "$2/$MOVIENAME";
|
|
# fi
|
|
if [ ! -f "$TRIMMED_NAME" ]; then
|
|
echo ffmpeg -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME";
|
|
ffmpeg -nostdin -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME";
|
|
fi
|
|
echo ffmpeg -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "'$EPISODE.mkv'";
|
|
ffmpeg -nostdin -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "$EPISODE.mkv";
|
|
else
|
|
echo "video file $DEST_NAME already exists; skipping";
|
|
fi
|
|
cd -;
|
|
done < "$FILE_LIST"
|