ffmpeg常用命令

提取文件中的视频

1
$ ffmpeg -i input.mp4 -vcodec copy -an v.mp4

提取文件中的音频

1
$ ffmpeg -i input.mp4 -vn -acodec copy a.m4a

提取文件中的mp3

1
2
$ ffmpeg -i input.mp4 -vn a.mp3
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 a.mp3

这里

  • -vn: 剔除输入文件中的视频
  • -ar: 设置输出mp3文件频率. 通常为 22050, 44100, 48000 Hz.
  • -ac: 设置音频通道数.
  • -ab: 设置音频码率.
  • -f: 设置输出文件格式. 这里为mp3

改变mp3文件的大小

1
$ ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3

提取mp3文件中的指定时间音频

1
2
$ ffmpeg -i mc.mp3 -ss 00:00:00 -to 00:00:30 -acodec copy a2.mp3
$ ffmpeg -i mc.mp3 -ss 00:00:00 -t 30 -acodec copy a3.mp3

提取指定时间的视频

1
2
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
$ ffmpeg -i input.mp4 -ss 00:28:20 -to 00:30:38 -codec copy part.mp4

改变视频文件的分辨率

1
2
$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4

合并视频与音频文件

1
2
3
$ ffmpeg -i a.m4a -i q1.mp4 -c copy av.mp4
$ ffmpeg -i input.mp4 -i input.mp3 -c:v copy -c:a aac -strict experimental output.mp4 (input.mp4中没音频)
$ ffmpeg -i input.mp4 -i input.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4(input.mp4中可有音频)

拼接多个视频

将要合并的文件写入文件join.txt, 如下

1
2
file /home/genius/videos/video1.mp4
file /home/genius/videos/video2.mp4

执行以下命令

1
$ ffmpeg -f concat -safe 0 -i join.txt -c copy 3dav.mp4

截取视频指定时间的图像

1
$ ffmpeg -i input.mp4 -ss 10 -vframes 1 output.jpg

设置视频宽高比

1
$ ffmpeg -i input.mp4 -aspect 16:9 output.mp4

截取视频指定时间的系列图像

1
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png

这里

  • -r: 帧率,默认25
  • -f: 输出文件格式, 这里为image
  • -image-%2d.png: 提取图片命名格式,这里文件将被命名为image-01.png, image-02.png等,如果是%3d, 则为image-001.png, image-002.png

截取视频指定时间的gif

1
$ ffmpeg -i input.mp4 -ss 10 -to 15 -s 640x320 -r 30 output.gif

给视频添加滤镜

1
$ ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=20:20" output.mp4

按照biterate压缩视频

1
$ ffmpeg -i input.mp4 -b:v 0.8M scaled.mp4

将图片合并成视频

  • 不带音频
    1
    ffmpeg -framerate 1 -pattern_type glob -i 'images/*.png' -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4