列出目录中每个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输出