列出目录中每个视频文件的时长

列出目录中每个视频文件的时长

我有一个目录,里面全是 .MP4 视频文件。我想查看一个列表,其中包含每个文件的名称及其持续时间(以分钟和秒为单位)。如下所示:

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

我尝试过许多文件管理器,但找不到一个可以显示此信息的。

涉及终端的解决方案就可以了。

答案1

试试这个:(灵感来自超级用户网

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,您将获得以秒为单位的持续时间。

对于所需的输出形式 HH: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

答案2

avprobe从包中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] 多个编辑列表条目,可能会发生音频/视频不同步,欢迎补丁
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720] 多个编辑列表条目,可能会发生音频/视频不同步,欢迎补丁
输入 #0, mov,mp4,m4a,3gp,3g2,mj2,来自‘Zieleinlauf_2013_1886.mp4’:
  元数据:
    主要品牌: isom
    次要版本:512
    兼容品牌: isomiso2avc1mp41
    编码器:Lavf54.2.100
  时长:00:00:14.09,开始:0.021995,比特率:4009 kb/s
    流#0.0(und):视频:h264 (高)、yuv420p、534x300、3854 kb/s、25 fps、25 tbn、50 tbc (默认)
    流 #0.1(und):音频:aac,22050 Hz,单声道,fltp,127 kb/s(默认)
# avprobe 输出

相关内容