Windows环境下批量提取视频文件单帧截图并嵌入文件名的方法
Windows环境下批量提取视频文件单帧截图并嵌入文件名的方法
我来给你分享一个在Windows下批量实现这个需求的实用方案,用FFmpeg这款强大的开源多媒体工具就能轻松搞定,步骤清晰易懂,新手也能快速上手~
第一步:准备FFmpeg工具
- 先下载适合Windows的FFmpeg压缩包(选full build版本即可),解压到你方便的文件夹,比如
C:\ffmpeg。 - 为了后续调用方便,建议把FFmpeg的
bin目录(比如C:\ffmpeg\bin)添加到系统环境变量PATH里——这样打开命令提示符就能直接用ffmpeg命令,不用每次输入完整路径。
第二步:编写批量处理的批处理脚本
在你的视频文件夹里新建一个文本文件,把下面的代码复制进去,然后将文件名改成BatchScreenshot.bat(注意后缀要从.txt改成.bat):
@echo off setlocal enabledelayedexpansion :: 可根据需求调整以下参数 set "FONT_SIZE=24" set "FONT_COLOR=white" set "TEXT_POSITION=10:10" :: 文字左上角坐标,格式为x:y set "SCREENSHOT_TIME=50%" :: 取视频中间帧,也可指定具体时间如"00:00:30" :: 遍历文件夹内常见视频格式,可自行添加更多格式(如.mov、.flv) for %%f in (*.mkv *.mp4 *.avi *.wmv) do ( :: 提取不含后缀的文件名 set "FILE_NAME=%%~nf" :: 设置输出截图的文件名 set "OUTPUT_FILE=!FILE_NAME!_screenshot.png" :: 调用FFmpeg提取帧并嵌入文件名 ffmpeg -i "%%f" -ss %SCREENSHOT_TIME% -vframes 1 -vf "drawtext=fontsize=%FONT_SIZE%:fontcolor=%FONT_COLOR%:text='!FILE_NAME!':x=%TEXT_POSITION%_x:y=%TEXT_POSITION%_y" "!OUTPUT_FILE!" echo 已生成截图:!OUTPUT_FILE! ) echo 所有截图处理完成! pause
参数调整说明
FONT_SIZE:控制嵌入文字的大小,默认24号字,可按需增大或减小FONT_COLOR:文字颜色,支持white、black、red等常见颜色,也可用十六进制色值如#FFFFFFTEXT_POSITION:文字在截图中的位置,10:10表示距离左上角各10像素的位置SCREENSHOT_TIME:截图的时间点,50%取视频中间帧,也可写成具体时间如00:00:15(第15秒)- 视频格式:脚本默认包含
.mkv、.mp4等格式,若你的视频有其他格式,直接在for %%f in (*.mkv *.mp4 ...)里补充即可
第三步:运行脚本
把BatchScreenshot.bat放到视频文件夹里,双击运行——命令提示符窗口会逐个处理视频,完成后每个视频都会生成对应的带文件名的截图啦!
额外小提示
- 如果不想把FFmpeg加到环境变量,也可以把
ffmpeg.exe直接放到视频文件夹里,脚本里的ffmpeg改成.\ffmpeg.exe就行 - 要是想把截图统一放到子文件夹,可在脚本开头加一句
mkdir screenshots 2>nul,然后把OUTPUT_FILE改成screenshots\!FILE_NAME!_screenshot.png
备注:内容来源于stack exchange,提问作者Ken Pino
相关产品推荐
相关产品推荐

