ディレクトリ内のビデオファイルの総再生時間を数時間単位で取得します。

ディレクトリ内のビデオファイルの総再生時間を数時間単位で取得します。

ベース:ディレクトリ内のビデオファイルの総再生時間を取得します。

ただし、この行を数時間単位で出力するには、数時間努力する必要があります。

find . -maxdepth 1 -exec ffprobe -v quiet -of csv=p=0 -show_entries format=duration {} \; | paste -sd+ -| bc

助けが必要ですか?すべての答えは数秒で出力されるので、重複しないことを願っています。これは悪く、もはやその質問に追加する人がいないからです。

答え1

代わりに、次のものを| paste -sd+ -| bc使用できますawk

find ... | awk '{s+=$0} END {print s/3600}'

これは小数点以下の桁数で時間を印刷しますが、時:分:秒などの高度な出力が必要な場合は、たとえば確認してください。ここまたはここまたは、exiftool以下でオプションを確認してください。リンクあなたの質問に。

答え2

これは、コマンド出力の数を3600で割る方法で要約されます。

あなたができること:

... | awk '{print $0 / 3600}'

ここでは、以下を使用してすべての操作を実行できます。

exiftool -r -n -q -p '${Duration;$_ = (our $total += $_) / 3600}' . | tail -n 1

(または$_ = ConvertDuration(our $total += $_)このように表現すると4 days 22:14:59)。

関連情報