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

Windows系统下用FFmpeg为视频添加含总帧数的帧编号

解决方案

要在视频中同时显示当前帧、首帧、总帧数和最后一帧信息,需要先通过ffprobe(FFmpeg自带工具)获取视频总帧数,再将该数值代入FFmpeg的drawtext滤镜参数中。以下是Windows系统下的具体操作步骤:

步骤1:获取视频总帧数

执行以下命令提取视频的总帧数:

ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 inputvid.mp4

如果上述命令返回N/A,改用以下更准确(但速度稍慢)的命令:

ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 inputvid.mp4

执行后会输出一个数字,即视频的总帧数。

步骤2:编写批处理命令自动完成帧信息添加

为避免手动输入总帧数,可编写Windows批处理脚本自动计算并添加所有帧信息:

@echo off
setlocal enabledelayedexpansion

:: 获取总帧数
for /f %%i in ('ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 inputvid.mp4') do set total_frames=%%i

:: 计算最后一帧编号(起始帧1001 + 总帧数 -1)
set /a last_frame=1001 + !total_frames! - 1

:: 执行FFmpeg添加帧信息
ffmpeg -i inputvid.mp4 -vf "drawtext=fontfile=Arial.ttf: text='Frame: %%{frame_num} | First Frame: 1001 | Last Frame: !last_frame! | Total Frames: !total_frames!': start_number=1001: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: fontsize=55: box=1: boxcolor=black: boxborderw=5" -c:a copy D:\Test\outputvid.mp4

参数说明:

  • text='Frame: %%{frame_num} | First Frame: 1001 | Last Frame: !last_frame! | Total Frames: !total_frames!':自定义显示的文本内容,包含当前帧、首帧、最后一帧和总帧数
  • start_number=1001:保持你设置的起始帧编号
  • 其余字体、位置、样式参数和原命令一致,可按需调整

注意事项

  • 确保ffprobe和ffmpeg已添加到系统环境变量,否则需要使用完整路径(如C:\ffmpeg\bin\ffprobe.exe)
  • 如果Arial字体不在系统默认路径,需指定完整字体路径(如fontfile=C:\Windows\Fonts\Arial.ttf)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:40:22