#!/bin/sh # # Print duration of video files # # Author: Reiner Herrmann # License: GPLv3 # # mplayer: # mplayer -identify -ao null -vo null -frames 0 FILENAME 2>/dev/null | grep ID_LENGTH # 0m3.604s # tcprobe: # tcprobe -i FILENAME 2>/dev/null | grep length # 0m3.340s, but can't read mkv files # ffmpeg: # ffmpeg -i FILENAME 2>&1 | grep Duration # 0m8.981s # print_time () { FILENAME=$1 if [ ! -f "$FILENAME" ] then echo "$0: $FILENAME: No such file or directory" 1>&2 return 1 fi TIME=`mplayer -identify "$FILENAME" -ao null -vo null -frames 0 2>/dev/null | grep ^ID_LENGTH | sed 's/^ID_LENGTH=\([0-9]*\)\.[0-9]*/\1/'` if [ ! $TIME ] then echo "$0: $FILENAME: Unrecognized format" 1>&2 return 1 fi HOURS=$(( $TIME/3600 )) MINUTES=$(( $(($TIME-$HOURS*3600))/60 )) SECONDS=$(( $TIME%60 )) printf " %i:%.2i:%.2i - $FILENAME\n" $HOURS $MINUTES $SECONDS } for filename in "$@"; do print_time "$filename"; done