0

ディレクトリ内のビデオ ファイルを読み取り、情報を .csv に出力する bash スクリプトがあります。この時点で私が抱えている唯一の問題は、すべてのビデオ ファイルの長さを HH:MM:SS 形式でエクスポートすると、1 時間以上の長さの秒が切り捨てられるため、出力が 1: ではなく 1:25: のようになることです。 25:34。1 時間未満の出力は正しく出力されます。最初に一時的な.txtファイルに入れたので、.csv部分ではないことはわかっていますが、その.txtでは正しくありません。

機能していないものは次のとおりです。

mediainfo $file_name > tmp_file

DURATION=`grep "Duration " tmp_file |head -n1 |sed -E 's/ //g;s/Duration://g;s/([0-9]*)ms//g;s/(([0-9]*)h)*(([0-9]*)mn)*(([0-9]*)s)*/\2:\4:\6/g;s/::/:0:/g;s/^:/0:/g'`
4

2 に答える 2

0

mediainfoから期間を取得する簡単な方法があり、厄介なテキスト変更を大幅に節約できます。

mediainfo --Inform="General;%Duration%" /path/to/file

これは、期間をミリ秒単位で返します。

次に、値を awk のstrftime()関数に渡して、次のように H:M:S に変換できます。

ms=$(($(mediainfo --Inform="General;%Duration%" /path/to/file) / 1000)) && \
   echo | awk -v t=$ms '{print strftime("%H:%M:%S", t)}'
于 2014-01-30T20:36:42.310 に答える