#! /bin/bash -ex SRC=${1:-.} DST=${2:-/var/tmp/spielfilme} declare -A FLAGS FORMATS=${FORMATS:-( "ogg" "webm" "mp4" )} FLAGS["ogg"]="-c:v libtheora -c:a libvorbis -q:v 6 -q:a 5" FLAGS["webm"]="-vcodec libvpx -acodec libvorbis -f webm -aq 5 -ac 2 -qmax 25 -threads 2" FLAGS["mp4"]="-vcodec libx264 -acodec aac -strict experimental -crf 19" do_convert() { f="$1" for format in "${FORMATS[@]}"; do t="${f/$SRC/$DST}" t="${t%.*}.${format}" if test -s "${t}"; then continue; # ignore if file exists and is not empty fi if test -e "$t"; then rm "$t"; # remove existing empty file fi test -d "${t%/*}" || mkdir -p "${t%/*}" if ( ! avconv -i "$f" ${FLAGS[$format]} -filter:v yadif "$t" \ || ! test -s "${t}") && test -e "$t"; then rm "$t"; # remove file if conversion failed fi done } if test -d "$SRC"; then for f in $(find "$SRC" \( \( -name '.??*' -o -name '*.jpg' \) -prune \) -o -type f -print); do do_convert "$1" done else IFS=" " for f in $SRC; do do_convert "$1" done fi