使用FFProbe获取视频fps

RDY*_*RDY 4 java ffmpeg ffprobe

我是ffprobe的新手,我的目标是获取视频fps并存储到java程序中.我的代码存储xml文件,但我想直接像int fps = 30存储;

ffprobe -v quiet -print_format xml -show_format -show_streams "/video/small/small.avi" > "/video/small/test.xml"
Run Code Online (Sandbox Code Playgroud)

这是我的代码.

小智 14

这将打印视频FPS:

ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate file.mp4
Run Code Online (Sandbox Code Playgroud)

  • 您可以将“-show_entriesstream=r_frame_rate”替换为“-show_entriesstream”以获取所有可用值的列表,并使用“-ofjson/flat/...”以更易于解析的格式获取数据(如果需要) (3认同)
  • 是的,它打印FPS,但仅精确打印一部分。幸运的是,您可以将这个分数取到计算器中以得到一个十进制值。例如,如果此命令的答案为“ 30000/1001”,则可以将其放入产生“ 29.97002997”的计算器中,舍入到大约30 FPS。 (2认同)
  • 我注意到 r_frame_rate 可能返回误导性的数字!avg_frame_rate 更正确。 (2认同)

小智 5

您也可以简单地运行它来获取视频 FPS,这将在 Linux 机器上运行。

ffprobe -v quiet -show_streams -select_streams v:0 INPUT |grep "r_frame_rate"
Run Code Online (Sandbox Code Playgroud)