美文网首页多媒体知识集
FFmpeg 学习3 -- 提取关键帧生成图片,生成视频;

FFmpeg 学习3 -- 提取关键帧生成图片,生成视频;

作者: Edwin_红狼 | 来源:发表于2022-06-10 10:18 被阅读0次

    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格式的内容 ;

    相关文章

      网友评论

        本文标题:FFmpeg 学习3 -- 提取关键帧生成图片,生成视频;

        本文链接:https://www.haomeiwen.com/subject/lwoemrtx.html