シェルを使用して、長さが4分を超えるディレクトリ内のすべてのmp4ファイルをftpでアップロードする必要があります。動画の長さを確認するスクリプトが見つかりません。誰もそれを行う方法を知っていますか?
どうもありがとうございました!
これにより、ビデオの長さがわかります。
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秒。
これが役立つことを願っています!
exiftool
(元々は画像ファイルからカメラのメタデータを読み取るためのものでしたが、後に拡張され、ほとんどのanyからの読み取りおよびwriteメタデータになりましたメディアファイルの種類)は、このために使用すると非常に便利です。以下で実行します:
exiftool FILE.mp4 | grep Duration
おそらく最初にexiftool
をインストールする必要がありますが、これは次のコマンドで簡単に実行できます(DebianおよびUbuntuなどの派生物で)。
apt install libimage-exiftool-Perl
もちろん、この答えは別の選択肢にすぎません。他の回答の多くも良いです。 :)
さらに簡単:
avprobe file.mp4 -show_format_entry duration
pers solution に追加すると、これはディレクトリ全体で使用できます。
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'
ffprobe
は、出力パスが指定されていない場合にエラーをスローするffmpeg
よりも洗練されたソリューションです。
ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1
ご覧のとおり、これを実現する方法は多数あります。 ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
ここでmediafileはファイルの名前で、以下のような出力を提供します。 1つ目は最初のストリームの長さ(通常はビデオ)で、2つ目は2つ目のストリームの長さ(通常はオーディオ)です。
DURATION : 00:21:40.132000000
DURATION : 00:21:40.062000000
ディレクトリ内のいくつかのビデオの長さを表示したい場合は、次のコマンドを使用できます
exiftool * | grep ^ Duration |カット-d '' -f 26