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

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

在 ubuntu 中有没有简单的方法可以找到视频的 fps?在 Windows 中,我使用 Gspot 查找有关视频文件的所有信息。但在 ubuntu 中,我发现很难找到这些基本信息。任何帮助都非常感谢。

答案1

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

ffmpeg -i 文件名

文件名被隐藏的样例输出:

输入 #0,matroska,webm,来自‘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"

有人编辑了一个不太符合我要求的版本。它引用了这里
额外的编辑...如果你想要 tbr 值,这个 sed 行有效

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

答案2

ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile

结果:

2997/100

答案3

这是一个基于 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
import sys
import os
import subprocess
def get_frame_rate(filename):
    if not os.path.exists(filename):
        sys.stderr.write("ERROR: filename %r was not found!" % (filename,))
        return -1         
    out = subprocess.check_output(["ffprobe",filename,"-v","0","-select_streams","v","-print_format","flat","-show_entries","stream=r_frame_rate"])
    rate = out.split('=')[1].strip()[1:-1].split('/')
    if len(rate)==1:
        return float(rate[0])
    if len(rate)==2:
        return float(rate[0])/float(rate[1])
    return -1

答案4

命令行的替代方法是通过 Nautilus(图形文件管理器)中的上下文菜单查看文件的属性。对于音频/视频文件,您会在那里看到一个带有额外信息的附加选项卡。

相关内容