ffmpeg常用指令笔记

平时使用ffmpeg对视频解码成图片比较多,就稍微简单的了解一些ffmpeg常用的相关指令。下面是一些相关指令的介绍笔记。

安装

Debian/Ubuntu/Linux Mint 下安装 ffmpeg 很简单:

1
apt-get install ffmpeg

其他操作系统安装方法,参考官网

如果想要手工编译 ffmpeg 可以参考官方 wiki。 Ubuntu/Debian/Mint 系手工编译 ffmpeg 参考 wiki

常用指令

1.显示文件信息

显示视频信息

1
ffmpeg -i input.avi

2.将视频拆分图片 批量截图

将视频拆分多张图片,每一帧图片,保存到 frames 文件夹下,命名 frame001.png 这种。可以加上 -r 参数以用来限制每秒的帧数,-r 10 就表示每秒 10 帧。

1
ffmpeg -i input.mp4 frames/frame%03d.png

3.图片合成视频

将多张图片合成视频

1
ffmpeg -i frames/frame%3d.png output.mp4

4.转换格式

格式之间转换 大部分的情况下直接运行一下即可

1
ffmpeg -i input.mp4 output.avi

将 flv 转码 MP4

1
ffmpeg -i input.flv -vcodec copy -acodec copy out.mp4

-vcodec copy-acodec copy 表示所使用的视频和音频编码格式,为原样拷贝。

5.视频切片操作

对视频切片操作,比如需要从视频第 1 分 45 秒地方,剪 10 秒画面,-ss 表示开始位置,-t 表示延长时间

1
ffmpeg -i input.mp4 -ss 00:01:45 -t 10 output.mp4

6.加速减速视频

加速视频

1
ffmpeg -i input.mp4 -vf “setpts=0.5*PTS” output.mp4

同理减速视频

1
ffmpeg -i input.mp4 -vf “setpts=2.0*PTS” output.mp4

此操作对音频无影响

7.视频截图

视频 10 秒的地方 (-ss 参数)截取一张 1920x1080 尺寸大小的,格式为 jpg 的图片 -ss后跟的时间单位为秒

1
ffmpeg -i input_video.mp4 -y -f image2 -t 0.001 -ss 10 -s 1920x1080 output.jpg

或者

1
ffmpeg -i input_video.mp4 -ss 00:00:06.000 -vframes 1 output.png

8.合成gif

把视频的前 30 帧转换成一个 Gif

1
ffmpeg -i input_video.mp4 -vframes 30 -y -f gif output.gif

将视频转成 gif

1
ffmpeg -ss 00:00:00.000 -i input.mp4 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

9.更换视频的分辨率

可以使用如下命令更换视频的分辨率

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

10.设置视频的宽高比

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

常见的宽高比:16:9、4:3、16:10、5:4

11.利用ffmpeg屏幕录制

参考:https://trac.ffmpeg.org/wiki/Capture/Desktop

12.添加水印

1
ffmpeg -i input.mp4 -i picture.png -filter_complex overlay="(main_w/2)-(overlay_w/2):(main_h/2)-(overlay_h)/2" output.mp4

picture.png 为水印图片, overlay 为水印位置