#!/bin/zsh encode () { [ ! -e "${dir}/ref.avi" ] && return [ -e "downsampled/${dir}.ts" -a \ "downsampled/${dir}.ts" -nt "${dir}/ref.avi" ] && return ffmpeg -y -i $dir/ref.avi -vcodec libx264 -q 20 -g 360 -x264opts \ crf=20:bluray-compat:aud:ref=4:level=4.1:threads=0:scenecut=-1:\ vbv_maxrate=40000:vbv_bufsize=30000:vbv_init=0.95:nr=100 \ -preset slow -profile high -vf scale=-1:540 /tmp/enc.avi && \ gst-launch-0.10 filesrc location=/tmp/enc.avi ! avidemux ! h264parse \ ! mpegtsmux ! filesink location=downsampled/${dir}.ts && rm /tmp/enc.avi } for dir in `ls --sort time -r | grep -v '.sh'`; do encode $dir || break; done