列出目录中每个video文件的持续时间

我有一个充满.MP4video文件的目录。 我希望看到一个列表,其中包含每个文件的名称及其持续时间(分钟和秒)。 像这样的东西:

one.mp4 4:34 two.mp4 2:23 three.mp4 8:34 four.mp4 0:43 

我已经尝试了很多文件管理器,但找不到会向我显示此信息的文件管理器。

涉及终端的解决方案很好。

试试这个:(灵感来自superuser.com )

 for f in *.mp4 do echo -n "$f " ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal "$f" done 

但是,输出的格式为HH:MM:SS.MILLISECONDS。 如果省略-sexagesimal选项,您将获得持续时间(以秒为单位)。

对于所需的输出formsHH:MM,您可以执行以下操作:

 for f in *.mp4 do echo -n "$f " dur=`ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"` min=`echo "$dur/60" | bc` sec=`echo "$dur%60/1" | bc` echo "$min:$sec" done 

avprobe libav-tools包中的libav-tools做到这一点。

示例输出avprobe myfile.mp4

 avprobe版本10.1-6:10.1-1~bpo70 + 1,版权所有(c)2007-2014 Libav开发人员
  建于2014年6月6日18:25:37,gcc 4.7(Debian 4.7.2-5)
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720]多个编辑列表条目,可能会发生a / v desync,欢迎修补
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720]多个编辑列表条目,可能会发生a / v desync,欢迎修补
输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'Zieleinlauf_2013_1886.mp4':
  元数据:
     major_brand:isom
     minor_version:512
     compatible_brands:isomiso2avc1mp41
    编码器:Lavf54.2.100
  持续时间:00:00:14.09,开始:0.021995,比特率:4009 kb / s
    流#0.0(und):video:h264(高),yuv420p,534x300,3854 kb / s,25 fps,25 tbn,50 tbc(默认)
    流#0.1(und):音频:aac,22050 Hz,单声道,fltp,127 kb / s(默认)
 #avprobe输出