登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: 用FFmpeg从视频截取任意一帧图片的解决办法[zt]     [回主站]     [分站链接]
用FFmpeg从视频截取任意一帧图片的解决办法[zt]
clq
浏览(233) - 2023-03-07 14:28:42 发表 编辑

关键字:

[2023-04-02 14:10:21 最后更新]
用FFmpeg从视频截取任意一帧图片的解决办法~

https://www.cnblogs.com/yao/articles/318772.html

在我的另一篇日志中,说到利用FFmpeg从视频截图的命令,那天在找从视频截取指定帧的图片的办法,这么多天没有进展,原来我从网上找的关于FFmpeg的参数命令列表并不全,少了-ss这么一个参数.于是这个问题也到现在才解决.

今天利用FFmpeg -h > ffmpeg.txt,把FFmpeg的命令打印出来后,才发现了这一参数:

-ss time_off set the start time offset

使用-ss参数,可以从指定的时间开始处理转换任务.如:

ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg

那么从任意一帧截图的问题也就解决了.只要-ss后的时间参数是随机产生,并且在视频的有效时间内,就可以了.

另外,-ss后跟的时间单位为秒。

2006-06-27 补充:


另外,通过指定-ss,和-vframes也可以达到同样的效果。

这时候-ss参数后跟的时间有两种写法,hh:mm:ss 或 直接写秒数 :

ffmpeg -i test.asf -y -f image2 -ss 00:01:00 -vframes 1 test1.jpg
or
ffmpeg -i test.asf -y -f image2 -ss 60 -vframes 1 test1.jpg

这样输出的图片是相同的。


clq  2023-04-02 14:10:21 发表 编辑

下面这篇更好

https://www.jianshu.com/p/caf789be9420

----------------------------------------------------------------

FFmpeg 学习3 -- 提取关键帧生成图片,生成视频;
Edwin_红狼
IP属地: 福建
0.306
2022.06.10 10:18:48
字数 601阅读 3,126

ffprobe -show_frames dy.mp4 >dy_log.mp4 可以查看关键帧;


获得截图,最简单的操作

在Ls目录下,需要先创建好ls目录

ffmpeg -i dy.mp4 -f image2 -r 2 ls/pic-%03d.jpg

或者放在跟视频同一个目录,也可以

ffmpeg -i dy.mp4 -f image2 -r 2 pic-%03d.jpg

-i 就是源视频文件名

-f [format ]就是截图的图片的格式,就是image2

-r 一秒要截图几帧,1就是1秒1帧,2就是1秒2帧;

ls/ 表示放在当前图片下面ls目标下(临时)

-%03d.jpg 这个截图出来的文件命名,表示从001开始到999结束;如果是写-%04d.jpg 就是从0001-9999,不足前面补0,形成的文件名就是pic0001-pic9999;


从第3秒到第10秒进行截图,发现头与尾这些不重要;

ffmpeg -i dy.mp4 -ss 00:00:03 -t 5 -f image2 -r 2 ls/pic03-%03d.jpg

也可以写成

ffmpeg -i dy.mp4 -ss 00:00:03 -to 00:00:08 -f image2 -r 2 ls/pic03-%03d.jpg

这个命令增加了两个参数,和变化了一个参数:

-ss 表示从第几秒开始

-t 表示几秒之后结束,有时一个mp4很长,你又没有必要全部截图就可以使用这个几秒结束 ;

-to 就是到具体几秒;上面就是到00:00:08秒,结束;

-r 2 表示一秒截图2张;

值得注意的是,ffmpeg 为了加速,会使用关键帧技术, 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,

把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。

如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:

ffmpeg -ss 00:00:03 -i dy.mp4 -to 00:00:08 -c copy -copyts dy03to08.mp4


将前30帧,截取并输出为gif文件;

ffmpeg -i dy.mp4 -vframes 30 -q:v 2 -f gif ls/dy30.gif

这里增加两个参数

-vframes 30 表示前面30帧,但是如果想截图30-60帧,如何写呢?

-q:v 2,表示画质;

-f gif 就表示输出为gif格式的内容 ;


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录
ffmpeg 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1