如何查找任何视频文件的每秒帧数?

Viv*_*vek 71 video framerate

有没有什么简单的方法可以在 ubuntu 中找到视频的 fps?在 Windows 中,我使用 Gspot 来查找有关视频文件的所有信息。但是在 ubuntu 中,我发现很难找到这些基本信息。任何帮助表示赞赏。

Rob*_*ans 79

如果它不是可变帧率,这将告诉您帧率:

ffmpeg -i 文件名

文件名模糊的示例输出:

输入 #0, matroska,webm, from 'somerandom.mkv':
  持续时间:01:16:10.90,开始:0.000000,比特率:N/A
    流 #0.0:视频:h264(高)、yuv420p、720x344 [PAR 1:1 DAR 90:43]、25 fps、25 tbr、1k tbn、50 tbc(默认)
    流 #0.1:音频:aac,48000 Hz,立体声,s16(默认)
ffmpeg -i 文件名 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"

有人编辑了一个不太像我想要的那样工作的人。此处引用
其他编辑...如果您想要此 sed 行的 tbr 值

sed -n "s/.*, \(.*\) tbr.*/\1/p"

  • ffmpeg 没有被弃用,avconv 来自 ffmpeg 的一个分支,为了避免那些使用 ffmpeg 替代品的人混淆,假分支被标记为不推荐使用,让这些用户知道他们使用的版本正在改变。你的评论具有误导性,可能会导致用户浪费时间研究这个 (7认同)

Ste*_*nny 45

ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile
Run Code Online (Sandbox Code Playgroud)

结果:

2997/100
Run Code Online (Sandbox Code Playgroud)

  • 如果视频流不是第一个流,这不起作用,如果它查看音频流,您将获得 0/0。我将编辑放置`-select_streams V:0`,它将选择第一个移动视频流。 (9认同)
  • 这可能是最好的答案,因为它给出了精确的帧速率(在示例中 24000/1001 = 23.976023976) (4认同)
  • 取决于你想要什么,这要么有效,要么无效。它报告编码的帧率,但不报告视频的实际帧率。例如,编码为 60fps 的 30fps 视频将报告 60fps,但在实际输出中仍为 30fps。 (3认同)
  • @SamWatkins 的补充很重要。没有它,命令给出输出“0/0”。 (2认同)

ntg*_*ntg 8

这是一个基于 Steven Penny 的回答的 Python 函数,它使用 ffprobe 给出了精确的帧速率

ffprobe 'Upstream Color 2013 1080p x264.mkv' -v 0 -select_streams v -print_format flat -show_entries stream=r_frame_rate
Run Code Online (Sandbox Code Playgroud)
ffprobe 'Upstream Color 2013 1080p x264.mkv' -v 0 -select_streams v -print_format flat -show_entries stream=r_frame_rate
Run Code Online (Sandbox Code Playgroud)