tags:

views:

1430

answers:

2

The following works very nicely to determine the length of various audio/video files:

mplayer -identify file.ogg 2>/dev/null | grep ID_LENGTH

I want to kill mplayer's output so I can determine the length of many files per second (without resorting to setting another process playing sound and then using -ao oss).

+1  A: 

FFMPEG can give you the same information in a different format (and doesn't attempt playing the file):

ffmpeg -i <myfile>
codelogic
+2  A: 

The MPlayer source ships with a sample script called midentify, which looks like this:

#!/bin/sh
#
# This is a wrapper around the -identify functionality.
# It is supposed to escape the output properly, so it can be easily
# used in shellscripts by 'eval'ing the output of this script.
#
# Written by Tobias Diedrich <[email protected]>
# Licensed under GNU GPL.

if [ -z "$1" ]; then
        echo "Usage: midentify.sh <file> [<file> ...]"
        exit 1
fi

mplayer -vo null -ao null -frames 0 -identify "$@" 2>/dev/null |
        sed -ne '/^ID_/ {
                          s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p
                        }'

The -frames 0 makes mplayer exit immediately, and the -vo null -ao null prevent it from trying to open any video or audio devices. These options are all documented in man mplayer.

ephemient