0

我有一个 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'`
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 回答
0

还有一种更简单的方法:

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

将以 HH:MM:SS.MMM 格式返回播放时间

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

mediainfo --Info-Parameters

在命令行上。

于 2014-02-08T05:13:16.760 回答