当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

最佳答案

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

ffmpeg -i filename

文件名模糊的示例输出:


Input #0, matroska,webm, from 'somerandom.mkv':
  Duration: 01:16:10.90, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264 (High), yuv420p, 720x344 [PAR 1:1 DAR 90:43], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
    Stream #0.1: Audio: aac, 48000 Hz, stereo, s16 (default)
ffmpeg -i filename 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"

有人编辑了一个不太像我想要的那样工作的人。它被引用为 here 附加编辑…如果你想要这个 sed 行的 tbr 值

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

次佳答案

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

结果:

2997/100

第三种答案

这是一个基于 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12015.html,未经允许,请勿转载。