平时使用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 | ffmpeg -i input.mp4 -filter:v scale=1280:720 -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
为水印位置