summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2010-01-11 18:10:03 +0100
committerReiner Herrmann <reiner@reiner-h.de>2016-01-31 22:51:06 +0100
commite330d318d8f4bc3773319c4c451cbd71b9367344 (patch)
treed5005361bf5be225c0501050923b2c1e865aaef6
parent4e6f4c7bc55d0f9e0bbe43fea8f75456bcc0db38 (diff)
added movie duration script
-rwxr-xr-xmovielen.sh45
1 files changed, 45 insertions, 0 deletions
diff --git a/movielen.sh b/movielen.sh
new file mode 100755
index 0000000..e39ba57
--- /dev/null
+++ b/movielen.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+# Print duration of video files
+#
+# Author: Reiner Herrmann <reiner@reiner-h.de>
+# 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
+