created a new script for movie 2 mp4 convertion
features:
* save metadata
* save creaton date
* delete greater files if you whant
#!/bin/bash # # converter for video files to mp4 # this script delete also all huger files if you want # please take care with DELETE FILES = yes # double check our output first if the quality is good enough for you # this script keeps metadata and date of creaton for the file # # written 2016/07/17 by Daniel Gohlke to clean up my NAS # # you need ffmpeg and some codecs, if i forget something please update this script # sudo apt-get install libavcodec-extra-53 libavutil-extra-51 libavformat-extra-53 libx264-146 ffmpeg # change what ever you need EXTENSION_NEW="mp4" DELETE_FILES="no" DEFAULT_CRF="22" # some kind of medium OUTPUT_DIR="output" read -p "Please enter CRF Quality / higher value is lower quality [51 worst .. 0 Loseless (default $DEFAULT_CRF) ]: " CRF CRF=${CRF:-$DEFAULT_CRF} echo "convert with CRF $CRF" # error handling function finish { if [ $FILENAME ]; then echo "some error occoured, cleanup file $OUTPUT_DIR/$FILENAME.mp4" echo "Error on line $1" rm -f "$OUTPUT_DIR/$FILENAME.mp4" else echo "User Break, leave $d untouched" fi rm -f $OUTPUT_DIR/filelist.txt } # Trap if something failed trap 'finish $LINENO' ERR #trap 'finish $LINENO' EXIT function start_convert { mkdir -p $OUTPUT_DIR find . -type f \( ! -iname "filelist.txt" \) | grep -v "$OUTPUT_DIR" > $OUTPUT_DIR/filelist.txt for d in $( cat $OUTPUT_DIR/filelist.txt ); do # for d in *; do echo "converting with crf $DEFAULT_CRF $d"; FILENAME=$(basename "$d") EXTENSION="${FILENAME##*.}" FILENAME="${FILENAME%.*}" # convert ffmpeg -stats -i $d -c:v h264 -strict experimental -crf $CRF -map_metadata 0 $OUTPUT_DIR/$FILENAME.mp4 # pply another file's attributes to new file touch -r $d $OUTPUT_DIR/$FILENAME.mp4 FILESIZE_OLD=$(stat -c%s "$FILENAME.$EXTENSION") FILESIZE_NEW=$(stat -c%s "$OUTPUT_DIR/$FILENAME.$EXTENSION_NEW") # echo $FILESIZE_OLD # echo $FILESIZE_NEW if [ "$DELETE_FILES" == "yes" ]; then echo "delete greater files is turned on" if [ "$FILESIZE_OLD" -ge "$FILESIZE_NEW" ]; then echo "delete $FILENAME.$EXTENSION" rm -f $FILENAME.$EXTENSION else echo "delete $OUTPUT_DIR/$FILENAME.$EXTENSION_NEW" rm -f $OUTPUT_DIR/$FILENAME.$EXTENSION_NEW fi else echo "delete greater files is turned off" fi done rm -f $OUTPUT_DIR/filelist.txt exit 0 } #ffmpeg -stats -i 0621232021DVB-TDasErste.m4v -c:v h264 -strict experimental -crf 20 -map_metadata 0 FILENAMEdefaultcrf20.mp4 # Start Program read -p "Do you wish to start convert your videos? (y/n)" yn case $yn in [Yy]* ) start_convert;; [Nn]* ) exit;; * ) echo "Please answer yes(y) or no(n).";; esac
link to github: https://github.com/danielgohlke/scripts/blob/master/converttomp4.sh