#!/bin/bash function get_line_count() { awk 'END{print NR}' todisc.log } check_stall() { while ps -p $TCODE_PID >/dev/null; do lines=$(get_line_count) sleep 5 newlines=$(get_line_count) ((newlines == lines)) && sleep 30 newlines=$(get_line_count) if ((newlines == lines)); then echo "transcode appears to be stalled" echo "We are going to send transcode a HUP and hope for the best" sleep 5 $(kill -0 $TCODE_PID > /dev/null 2>&1) && kill -HUP $TCODE_PID fi done } function run_transcode() { "${TCODE_CMD[@]}" >> "$LOG_FILE.tmp" 2>&1 sleep 1 } run_transcode & sleep .5 # short sleep to allow 1st jpg to appear TCODE_PID=$(/dev/null; do sleep $SLEEP # spinner interval spin "Seeking in video and creating images: $(find "$JPEG_DIR" \ -maxdepth 1 -name \*.jpg|sort|awk -F / '{ field = $NF }; END{ print field }')" done echo echo "Created $(find "$JPEG_DIR" -maxdepth 1 -name \*.jpg|wc -l) JPEGS of $TOTAL_JPEGS" cleanlog 1 else cleanlog 1 runtime_error "Problem creating images from the video." exit 1 fi ) check_stall