如何检查视频(mp4)使用外壳的时间?


Answers:


23

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

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

也适用于远程视频网址,例如ffmpeg -i“ instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… ” 2>&1 | grep持续时间| 切-d''-f 4 | sed s /,//
skidadon

FFmpeg日志消息格式是否得到保证?如果不是,我不会非常喜欢-它可能会停止与任何发行版一起使用。
OndraŽižka,

7

Mediainfo是用于此目的的快速工具:

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

您可以在更详尽的答案中找到更多选项。

在我的测试中,ffprobe需要0.3秒和mediainfo0.09秒。


这给出了奇怪的结果...像2679600 ...更好地使用mediainfo --Inform="Video;%Duration/String%" [inputfile]...它将为您带来一些好处,例如43分50秒
Robert Riedl

5

您可以尝试使用avconv命令。

首先,您应该安装:

通过软件中心安装

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

avconv -i test.mp4

在输出中,有一个名为Duration的字段

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秒。

希望这会有所帮助!


1
也可以将其与avprobe- 一起使用,而不需要-i,但其工作方式完全相同。或ffprobe为@per的答案。
evilsoup 2012年

4

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

exiftool FILE.mp4 | grep Duration

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

apt install libimage-exiftool-perl

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



1

添加到pers解决方案中,可以在整个目录中使用:

for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done

它甚至可以通过扩展| sort使文件按其长度排序。

您可以将其添加到.bashrc.bash_aliases为了能够 lsvlength | sort在目录上执行

alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done'

1

ffprobeffmpeg没有给出输出路径会引发错误的解决方案更为优雅。

ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1

0

如果要查看目录中某些视频的时长,可以使用以下命令

exiftool * | grep ^持续时间| 切-d''-f 26


1
无需使用grep等。简单地exiftool -T -Duration *.mkv(或任何文件模式)
PerlDuck

0

如您所见,有很多方法可以完成此任务。 ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION其中mediafile是文件名,将提供类似于以下内容的输出。第一个是第一流(通常是视频)的持续时间,第二个是第二个流(通常是音频)的持续时间

  DURATION        : 00:21:40.132000000
  DURATION        : 00:21:40.062000000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.