使用ffmpeg从视频中截取图像帧(最简单实用的视频抽帧,一句命令)

Table of Contents

1.最佳方式

2.普通的命令:(画质差)

3. 视频旋转:

4. 批量视频抽帧:


参考:ffmpeg视频抽帧

1.最佳方式

第二种方法抽帧图片画质很差,这里提供更好的命令,提高分辨率:

ffmpeg -i /data/video_1.mp4 -f image2 -vf fps=fps=1/60 -qscale:v 2 /data/mp4-%05d.jpeg

使用ffmpeg从视频中截取图像帧

2.普通的命令:(画质差)

ffmpeg -i inputfile.avi -r 1 -f image2 image-%05d.jpeg

-r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧,5就表示一秒抽5张。
-f 指定保存图片使用的格式,可忽略。

image2: 图像解析模式
image-%05d.jpeg,指定文件的输出名字,可以加个路径。
2. ffmpeg -i inputfile.avi -r 1 -s 4cif -f image2 image-%05d.jpeg
4cif 代表帧的尺寸为705x576.其他可用尺寸如下。
3. ffmpeg -i inputfile.avi -r 1 -t 4 -f image2 image-%05d.jpeg
-t 代表持续时间,单位为秒。
4. ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -f image2 image-%05d.jpeg
-ss 指定起始时间
5.ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -vframes 120 4cif -f image2 image-%05d.jpeg
-vframes 指定抽取的帧数

3. 视频旋转:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

4. 批量视频抽帧:

  1. #!/usr/bin/env bash
  2. videos_root=/data/videos
  3. save_root=/data/video_imgs/Image_fps50/
  4. for video in $videos_root/*;
  5. do
  6. echo $video
  7. save_dir=$save_root$(basename $video .avi)
  8. if [ ! -d $save_dir ];then
  9. mkdir $save_dir
  10. fi
  11. ffmpeg -i $video -f image2 -vf fps=fps=50 -qscale:v 2 $save_dir/mp4-%05d.jpeg
  12. done
(0)

相关推荐