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

利用ffmpeg截图和生成gif

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg
-vframes 180代表截取180帧,
实测后发现如果视频是60fps,那么会从第10秒截取到第13秒
  • -i input.mp4:指定输入视频文件。
  • -ss 00:00:10:定位到视频的第10秒。
  • -vframes 1:指定只提取一帧。
  • output.jpg:输出截图文件。

从视频中提取多帧截图

ffmpeg -i input.mp4 -vf fps=1/60 output_%03d.jpg
  • -vf fps=1/60:设置每秒提取一帧,1/60表示每60秒提取一帧。
  • output_%03d.jpg:输出文件命名格式,%03d表示三位数字编号。

 从视频中提取特定时间段的截图
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -vf fps=1/10 output_%03d.jpg-vf 是 -filter:v 的简写,表示对视频流使用视频滤镜。fps=1/10 指的是帧率为 每秒 1/10 帧,也就是 每 10 秒提取一帧。意味着1分钟内截图6张图
  • -ss 00:01:00:开始时间,从第1分钟开始。
  • -to 00:02:00:结束时间,到第2分钟结束。
  • -vf fps=1/10:每10秒提取一帧,如果视频有1分钟,那么仅截图6张图
从视频中提取高质量截图 

 如果需要提取高质量的截图,可以指定输出图片的质量:

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 -q:v 2 output.jpg
  • -q:v 2:设置输出图片的质量,数值越小质量越高,范围是1-31。
从视频中提取指定分辨率的截图 
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 -s 640x360 output.jpg
  • -s 640x360:设置输出图片的分辨率为640x360。

关键帧限制​:若视频关键帧间隔大,快速定位(-ss-i前)可能无法精确到非关键帧。,所以为了精确,需要先-i然后再-ss

截取第5秒的第1帧(快速定位,可能不精确)
ffmpeg -ss 5 -i input.mp4 -vframes 1 -q:v 2 output.jpg

特点​​:-ss-i前,优先用关键帧定位,速度快但可能不精确。

精确截取第5秒的帧(较慢但准确)
ffmpeg -i input.mp4 -ss 5 -vframes 1 -q:v 2 output.jpg
  • ​特点​​:-ss-i后,逐帧解码到指定时间,速度慢但更精确。

截取第5.5秒的帧(精确到小数)

ffmpeg -ss 5.5 -i input.mp4 -vframes 1 output.png
 输出PNG格式
ffmpeg -ss 5 -i input.mp4 -vframes 1 -compression_level 0 output.png-compression_level:取值范围:0 到 9含义:0:最小压缩,生成的文件较大,但处理速度快9:最大压缩,文件体积小,但处理速度慢默认值:-compression_level 6

时间精度​​:支持毫秒级时间(如00:00:05.500)。 

文件名

ffmpeg -ss 5 -i input.mp4 -vframes 1 output_%03d.jpg
  • 效果​​:生成 output_001.jpg
  • ​占位符说明​​:
    • %03d:3位数字编号(如 001002)。
    • %d:无填充编号(如 12)。

使用 ffmpeg 实现视频中每隔n帧截图一张,可以使用以下命令:

ffmpeg -i input.mp4 -r 7.5 -q:v 2 output_%03d.jpg

参数详解:

-r n表示一秒内我一共想提取n帧,也就是每秒的帧率,即fps

计算公式:n=视频的fps/每隔x帧截取一次图片

  • -r 7.5表示如果原视频是 30fps,每 4 帧截图一次,30/4= 7.5fps。

  • 如果原视频是 60fps,每5帧截图一次,60/5=12

生成调色板后做成gif

生成调色板
./ffmpeg -i ./jietu/output_%03d.jpg -vf "fps=10,scale=320:-1:flags=lanczos,palettegen" palette.png
在调色板的基础上生成gif
./ffmpeg -i ./jietu/output_%03d.jpg -i palette.png -lavfi "fps=10,scale=480:-1 [x]; [x][1:v] paletteuse" output3.gif

 

http://www.xdnf.cn/news/7289.html

相关文章:

  • FART 主动调用组件设计和源码分析
  • 【AWS入门】AWS身份验证和访问管理(IAM)
  • C#接口的setter或getter的访问性限制
  • ## Docker 中 Elasticsearch 启动失败:日志文件权限问题排查与解决
  • PYTHON训练营DAY30
  • Git基础面试题
  • Git冲突解决:从手足无措到游刃有余的蜕变之路
  • 动态IP技术在跨境电商中的创新应用与战略价值解析
  • Icecream Video Editor:简单易用的视频编辑软件,轻松打造专业视频
  • 基础深度补全模型DepthLab: From Partial to Complete
  • CRMEB多商户预约服务上门师傅端
  • Web漏洞扫描服务的特点与优势:守护数字时代的安全防线
  • 【盈达科技】AICC™系统:重新定义生成式AI时代的内容竞争力
  • 10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!
  • JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.
  • 一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
  • 【框架安装】win10 配置安装GPU加速的tensorflow和keras教程
  • 3.QMainWindow菜单栏menu bar和工具栏tool bars
  • 分布式事务
  • SID 2025上的天马,用“好屏”技术重构产业叙事
  • 【NLP】36. 从指令微调到人类偏好:构建更有用的大语言模型
  • [Spring Boot]整合Java Mail实现Outlook发送邮件
  • 《AI高效运维体系建设创新》技术连载(四)
  • 数据库连接问题排查全攻略:从服务状态到网络配置的深度解析
  • PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
  • HttpMessageConverter 的作用是什么? 它是如何实现请求体到对象、对象到响应体的自动转换的(特别是 JSON/XML)?
  • Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析
  • 遨游科普:三防平板是什么?应用在什么场景?
  • Perl数据库测试实战:从基础到高级的完整解决方案
  • 视觉-和-语言导航的综述:任务、方法和未来方向