将视频持续时间导出为HH:MM:SS为.csv

时间:2014-01-30 19:03:54

标签: bash mediainfo

我有一个bash脚本,它读取目录中的视频文件并将信息输出到.csv中。我在这一点上唯一的问题是,当我以HH:MM:SS格式导出所有视频文件的持续时间时,它会在一小时内切断任何持续时间的秒数,因此我的输出看起来像1:25:而不是1: 25:34。一小时以下的任何东西输出正确。我知道它不是.csv部分,因为我首先放入了一个临时的.txt文件,但是在.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'`

2 个答案:

答案 0 :(得分: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)}'

答案 1 :(得分:0)

有一种更简单的方法:

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

将以HH:MM:SS.MMM

格式返回播放时间

(有关变量的完整列表 - Inform = 可以返回,只需输入:

mediainfo --Info-Parameters

在命令行上。