You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg/ffprobe一键统计视频每秒的画面帧数?

单条命令统计视频每秒帧数的方法

问题描述

我需要统计相机拍摄的视频中每秒的画面帧数(由于拍摄机制限制,无法保证帧率恒定,需对此进行验证)。目前我需分开运行FFmpeg和ffprobe:首先用FFmpeg裁剪视频,命令为:
ffmpeg -ss 00:00:00 -to <desired time in seconds> -i <in_video> -c copy <out_video>
再用ffprobe统计片段帧数,命令为:
ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -print_format csv <out_video>
请问是否存在单条命令可输出视频每秒的帧数?

解决方案

可以用单条命令直接统计原视频每秒的帧数,无需提前裁剪,以下是两种高效实现方式:

方法1:ffmpeg + awk 组合统计

ffmpeg -i <in_video> -vf "showinfo" -f null - 2>&1 | grep "n:" | awk '{split($8,a,"="); split($10,b,"="); sec=int(b[2]); frames[sec]++} END {for(s in frames) print "第" s "秒:" frames[s] "帧"}'
  • 逻辑:通过showinfo滤镜输出每帧的时间戳信息,用grep筛选出帧数据行,再用awk提取秒数并分组统计该秒内的帧数,最后按秒输出统计结果。

方法2:ffprobe + awk 组合统计(更简洁)

ffprobe -v error -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0 <in_video> | awk '{sec=int($1); count[sec]++} END {for(s in count) print "第" s "秒:" count[s] "帧"}'
  • 逻辑:用ffprobe直接导出每帧的显示时间戳(pkt_pts_time),通过awk将时间戳取整为秒,按秒分组统计帧数,最终输出每秒的实际帧数。

两种方法都能直接验证视频帧率是否恒定,结果直观展示每秒的帧数变化,省去了额外的视频裁剪步骤。

内容的提问来源于stack exchange,提问作者citygoar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:15:31