当前位置: 首页 > news >正文

bat 批处理实现 FFmpeg 命令导出 mov 到 png 序列帧

bat 批处理实现 FFmpeg 命令导出 mov 到 png 序列帧

  • bat 脚本
  • FFmpeg 安装
  • 相对路径版本
  • 参考资料

bat 脚本

mov 拖到 bat 上即可执行,它会自动在当前位置创建 frames 输出结果

@echo off
:: ================ 可自定义参数 ================
set "FPS=24"           :: 总帧数(24帧=1秒@24fps)
set "OUTPUT_DIR=frames"  :: 输出文件夹(自动创建)
set "DIGITS=2"          :: 序号位数(默认2位:01-24;改为4则是0001-0024)
:: ==============================================:: 检查是否拖入了MOV文件
if "%~1"=="" (echo 请将MOV文件拖到这个脚本上!pauseexit /b
):: 创建输出文件夹
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%":: 构建序号占位符(根据DIGITS变量生成,如2位则是%%02d)
set "PLACEHOLDER=%%0%DIGITS%d":: 执行FFmpeg命令
ffmpeg -i "%~1" -vframes %FPS% -pix_fmt rgba -y "%OUTPUT_DIR%\frame%PLACEHOLDER%.png":: 检查结果
set "TEST_FILE=%OUTPUT_DIR%\frame"
if %DIGITS% equ 2 set "TEST_FILE=%TEST_FILE%01.png"
if %DIGITS% equ 3 set "TEST_FILE=%TEST_FILE%001.png"
if %DIGITS% equ 4 set "TEST_FILE=%TEST_FILE%0001.png"if exist "%TEST_FILE%" (echo 成功!%FPS%帧已保存到 %OUTPUT_DIR% 文件夹(序号位数:%DIGITS%位)
) else (echo 失败!请确认FFmpeg已安装并添加到系统PATH
)
pause

FFmpeg 安装

解压后将 ffmpeg 放到 D:\ffmpeg 添加 D:\ffmpeg\bin 到系统变量即可。
输入 ffmpeg -version 测试,显示相关信息说明ok

> ffmpeg -version
ffmpeg version N-99346-g003b5c800f Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3-win32 (GCC) 20200320
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --enable-shared --disable-static --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libvidstab --disable-libwavpack --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomp
libavutil      56. 59.100 / 56. 59.100
libavcodec     58.106.100 / 58.106.100
libavformat    58. 58.100 / 58. 58.100
libavdevice    58. 11.102 / 58. 11.102
libavfilter     7. 87.100 /  7. 87.100
libswscale      5.  8.100 /  5.  8.100
libswresample   3.  8.100 /  3.  8.100
libpostproc    55.  8.100 / 55.  8.100

在这里插入图片描述

相对路径版本

如果不想设置环境变量,直接把 bat 脚本放在 D:\ffmpeg\mov2png.bat 后续操作都在 D:\ffmpeg\ 下操作即可。

@echo off
:: ================ 可自定义参数 ================
set "FPS=24"           :: 总帧数(24帧=1秒@24fps)
set "OUTPUT_DIR=frames"  :: 输出文件夹(自动创建)
set "DIGITS=2"          :: 序号位数(默认2位:01-24;改为4则是0001-0024)
:: ==============================================:: 检查是否拖入了MOV文件
if "%~1"=="" (echo 请将MOV文件拖到这个脚本上!pauseexit /b
):: 创建输出文件夹
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%":: 构建序号占位符(根据DIGITS变量生成,如2位则是%%02d)
set "PLACEHOLDER=%%0%DIGITS%d":: 通过相对路径调用ffmpeg.exe(脚本放在D:\ffmpeg,ffmpeg在bin目录下)
".\bin\ffmpeg.exe" -i "%~1" -vframes %FPS% -pix_fmt rgba -y "%OUTPUT_DIR%\frame%PLACEHOLDER%.png":: 检查结果
set "TEST_FILE=%OUTPUT_DIR%\frame"
if %DIGITS% equ 2 set "TEST_FILE=%TEST_FILE%01.png"
if %DIGITS% equ 3 set "TEST_FILE=%TEST_FILE%001.png"
if %DIGITS% equ 4 set "TEST_FILE=%TEST_FILE%0001.png"if exist "%TEST_FILE%" (echo 成功!%FPS%帧已保存到 %OUTPUT_DIR% 文件夹(序号位数:%DIGITS%位)
) else (echo 失败!请确认脚本放在D:\ffmpeg,且bin目录下有ffmpeg.exe
)
pause

参考资料

这个包里带了 FFmpeg

http://www.dtcms.com/a/280118.html

相关文章:

  • 新版本PyCharm Conda环境设置 “找不到conda可执行文件”的解决
  • Git分支管理与工作流详解
  • 记录一条sql面试题2
  • MyBatis动态语法标签速查
  • Fastapi框架总览与核心架构
  • iOS App 上架工具选型与跨平台开发 iOS 上架流程优化实录
  • 深入探讨Hadoop YARN Federation:架构设计与实践应用
  • Datawhale AI数据分析 笔记
  • 2025开放原子开源生态大会 | openKylin的技术跃迁和全球协作
  • 回顾一下Docker的基本操作
  • Linux部署Python服务
  • 面向医疗AI场景的H20显卡算力组网方案
  • 2025开放原子开源生态大会 | 开源欧拉的AI原生实践与全球协作
  • 应用部署作业-02-流程
  • 第十四章 Stream API
  • 深度强化学习 | 图文详细推导深度确定性策略梯度DDPG算法
  • 波动回升正当时!期权合成多头:震荡市攻守兼备利器
  • 深入解析环境变量:从基础概念到系统级应用
  • 用uniapp开发鸿蒙应用(暂停更新-根据项目更新,现在项目未开始)
  • QT简介和QT环境搭建
  • JVM——JVM 的内存区域是如何划分的?
  • Go从入门到精通(24) - 一个简单web项目-添加redis缓存
  • 教育培训机构如何为课程视频添加防盗录的强水印?
  • IPM31主板E3300usb键盘鼠标安装成功Sata接口硬盘IDE模式server2003-nt-5.2.3790
  • AI生成代码示例
  • 【自学linux】计算机体系结构和操作系统第二章
  • LangChain面试内容整理-知识点18:Chroma 向量数据库集成
  • 3.1k star!推荐一款开源基于AI实现的浏览器自动化插件工具 !
  • 蓝牙信号强度(RSSI)与链路质量(LQI)的测量与应用:面试高频考点与真题解析
  • GitCode疑难问题诊疗技术文章大纲