ffmpeg常用命令


将视频转换为图片

ffmpeg -i movie.mp4 movie%d.jpg

ffmpeg -i movie.mp4 movie%03d.jpg

将图片转换为视频

ffmpeg -f image2 -i img%d.jpg output.mpg

ffmpeg -f image2 -start_number 100 -i img%d.jpg output.mpg

cat *.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.mpg

拆分视频

ffmpeg -ss START -t LENGTH -i ORIGINALFILE.mp4  -acodec copy -vcodec copy OUTFILE.mp4

如:
ffmpeg -ss 0 -t 00:15:00 -i ORIGINALFILE.mp4 -acodec copy -vcodec copy OUTFILE-1.mp4
ffmpeg -ss 00:15:00 -t 00:15:00 -i ORIGINALFILE.mp4 -acodec copy -vcodec copy OUTFILE-2.mp4
ffmpeg -ss 00:30:00 -t 00:15:00 -i ORIGINALFILE.mp4 -acodec copy -vcodec copy OUTFILE-3.mp4

对于音频分析,不需要指定-vcodec

合并视频和音频

从某些网站下载的视频和音频是两个独立的文件,也可通过ffmepg合并

ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac  output.mp4

视频转GIF

  • 基本方式:

ffmpeg -i video.mp4 output.gif

采用默认参数生成的gif质量可能不是很好,个别颜色会失真;采用较新版本的ffmpeg表现会好一些, 但也可能满足不了需求,为此可通过自定义调色板对生成gif的质量进行改进。

  • 生成调色板

ffmpeg -i video.mp4  -filter_complex "[0:v] palettegen" palette.png

其中palette.png就是针对特定视频内容生成的调色板文件,是一个16x16的图像

  • 使用定制的调色板生成GIF

ffmpeg -i video.mp4 -i palette.png -filter_complex "[0:v][1:v] paletteuse" output.gif

也可同时指定帧率和图像大小

ffmpeg -i video.mp4 -i palette.png -filter_complex "[0:v] fps=10,scale=640:-1 [new];[new][1:v] paletteuse" output.gif
  • 亦可将上两步合并成到一个命令中:

ffmpeg -i video.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0  output.gif

查看可用的dshow设备及支持的option

ffmpeg -list_devices true -f dshow -i dummy

ffmpeg -list_options true -f dshow -i video="Integrated Camera"

从dshow设备截图

ffmpeg -y -f dshow -i video="Integrated Camera" -r 1 -t 4 -s 640x480 -q:v 5 "image-%3d.jpg"

其中:

  • -r 截图频率

  • -t 持续时间

  • -q:v 图片质量

  • -s 图像大小

  • %3d 三位数字,生成的文件名是image-001.jpg、image-002.jpg、…

使用ffplay显示usb camera内容

ffplay -f dshow -i video="Integrated Camera"