Skip to content

Instantly share code, notes, and snippets.

@rijkvp
Created March 3, 2024 10:31
Show Gist options
  • Save rijkvp/64a05b176c492062746d550cea8cd163 to your computer and use it in GitHub Desktop.
Save rijkvp/64a05b176c492062746d550cea8cd163 to your computer and use it in GitHub Desktop.
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Please provide exactly 1 argument." >&2
exit 1
fi
input_dir="$1"
# From: https://www.reddit.com/r/DataHoarder/comments/e4194o/comment/kfr3ama/
ffmpeg_args="-vf yadif=mode=send_field:parity=bff -c:v libx264 -preset medium -crf 21 -pix_fmt yuv420p -c:a aac -b:a 256k -strict -2 -write_tmcd 0"
source_ext="avi"
target_ext="mkv"
echo "Input directory: $input_dir"
echo "Target extension: $target_ext"
find "$input_dir" -iname "*.$source_ext" -print0 | while IFS= read -r -d '' file; do
filename="$(basename -- "$file")"
directory=$(dirname -- "$file")
target_file="$directory/${filename%.*}.$target_ext"
if [ -f "$target_file" ]; then
echo "[$(date +'%Y-%m-%d %H:%M')] Skipping '$file' -> '$target_file' (target file exists)."
continue
fi
echo "[$(date +'%Y-%m-%d %H:%M')] Converting '$file' -> '$target_file'.."
ffmpeg -nostdin -hide_banner -i "$file" $ffmpeg_args "$target_file"
if [ $? -eq 0 ]; then
echo "[$(date +'%Y-%m-%d %H:%M')] Converted '$file'."
# rm "$file" # Uncomment to auto delete files after conversion
else
echo "[$(date +'%Y-%m-%d %H:%M')] Conversion failed for '$file'!"
exit 1
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment