The problem#
I've somehow multiple times ended up with corrupted video files such that they're cut off at some point, apparently due to a copy being interrupted or similar. As a result, I'm a bit paranoid about my video files not being what I expect, so I wanted a way to quickly check the length and view the start and end of many videos.
The solution#
The following script check_video_length.sh
, takes any number of video
files as arguments, and one-by-one, prints out the length in minutes,
and player the first and last 10 seconds of the video (or less if you
press q to quit MPlayer sooner):
#!/usr/bin/sh
for video in "$@"
do
seconds=$(mediainfo "$video" --Output=JSON
| jq '.media.track[0].Duration' | tr -d '"')
minutes="$(echo "scale=2; $seconds" / 60 | bc)"
echo "$video is $minutes minutes long."
echo "Playing $video from start first 10 seconds..."
mplayer -osdlevel 3 -endpos 10 "$video" >/dev/null 2>&1
echo "Playing $video from 10 seconds before end..."
mplayer -osdlevel 3 -ss "$(echo "$seconds" - 10\
| bc)" "$video" >/dev/null 2>&1
echo
done