コマンドラインを使用して複数のmp3の累積再生時間を見つける方法は?

コマンドラインを使用して複数のmp3の累積再生時間を見つける方法は?

私は多くのmp3ファイルを含むディレクトリを持っており、その累積期間を簡単に見つける方法が必要です。ファイルの持続時間を見つけることができることを知っています

ffmpeg -i <file> 2>&1 | grep Duration

私はまた、以下を使用してディレクトリ内のすべてのmp3ファイルに対してこのコマンドを実行できることを知っています。

for file in *.mp3; do ffmpeg -i "$file" 2>&1 | grep Duration; done

これは少しフィルタリングできます。

for file in *.mp3; do ffmpeg -i "$file" 2>&1 | grep Duration | cut -f4 -d ' '; done

しかし、これらすべてをどのように要約しますか?使用するffmpeg必要はありません。出力形式もそれほど重要ではありません。秒またはmm:ssなどが動作します。私はそれが次のように見えるようにしたいです:

$ <command>
84:33

ベストアンサー1

正確に期間を秒単位で取得し、それをbcに追加できます。

for file in *.mp3;do ffprobe -v error -select_streams a:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 "$file";done|paste -sd+|bc -l

この数字をHH:MM:SS形式に直接変換してください。例えばhttps://stackoverflow.com/a/12199816/6481121

おすすめ記事