回答:
これにより、ビデオの長さがわかります。
ffmpeg -i myvideo 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//
avconvコマンドを使用してみてください。
最初にインストールする必要があります:
フラグ-iを指定してコマンドを入力すると、ビデオに関する情報が表示されます。
avconv -i test.mp4
出力には、というフィールドがあります Duration
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
built on Nov 6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Duration: 00:58:28.05, start: 0.000000, bitrate: 888 kb/s
Stream #0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbc
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
これで、コマンドを使用して、フィールドDurationの値のみを取得できます。
タイプ:
avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//
私の場合、結果は次のとおりです。
00:58:28.05
58分と28.05秒。
これが役立つことを願っています!
avprobe
-の必要はありませんが-i
、それ以外はまったく同じように機能します。またはffprobe
、@ perの回答用。
exiftool
(元々の画像ファイルからカメラのメタデータを読み取るためのものではなく、後で読みとするために、拡張書き込みメタデータ、ほとんどのすべてのメディアファイルの種類)このために使用することは非常に便利です。以下で実行します:
exiftool FILE.mp4 | grep Duration
おそらくexiftool
最初にインストールする必要がありますが、これは次のコマンドで簡単に実行できます(DebianおよびUbuntuなどの派生物で)。
apt install libimage-exiftool-perl
もちろん、この答えは別の選択肢にすぎません。他の回答の多くも良いです。:)
さらに簡単:
avprobe file.mp4 -show_format_entry duration
persソリューションに追加すると、これはディレクトリ全体で使用できます。
for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,// | tr -d "\n" && echo " $f"; done
さらに拡張することもできます | sort
ファイルをその長さでソートするます。
これをディレクトリに追加し.bashrc
たり、ディレクトリで.bash_aliases
実行できるようにすることができます lsvlength | sort
alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,// | tr -d "\n" && echo " $f"; done'