如何使用 shell 检查视频(mp4)的长度?

如何使用 shell 检查视频(mp4)的长度?

我需要使用 shell 通过 ftp 上传目录中长度 > 4 分钟的所有 mp4 文件。我找不到任何脚本来检查视频的长度。有人知道怎么做吗?

非常感谢!

答案1

这将为您提供视频的长度。

ffmpeg -i myvideo 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//

答案2

媒体信息是一个用于此目的的快速工具:

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

您可以在以下位置找到更多选项更详尽的答案

在我的测试中,ffprobe需要0.3秒,mediainfo需要0.09秒。

答案3

exiftool(最初用于从图像文件中读取相机元数据,但后来扩展为读取和元数据几乎任何(一种媒体文件)非常方便使用。使用以下命令运行:

exiftool FILE.mp4 | grep Duration

您可能需要exiftool先安装,但可以使用以下命令轻松完成(在 Debian 和 Ubuntu 等衍生版本上):

apt install libimage-exiftool-perl

当然,这个答案只是另一种选择。许多其他答案也很好。:)

答案4

您可以尝试使用AVCONV命令..

首先您应该安装:

通过软件中心安装

如果您输入带有标志 -i 的命令,您将获得有关视频的信息:

avconv -i test.mp4

输出中有一个名为的字段期间

avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':

  Duration: 00:58:28.05, start: 0.000000, bitrate: 888 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s

现在您可以使用命令仅获取字段的值期间

类型:

avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//

就我而言,结果是:

00:58:28.05

58分28秒05。

希望这会有所帮助!

相关内容