- 视频剪辑
ffmpeg -ss 1:23.456 -t 15 -i ./video.mp4 -c copy ./out.mp4
表示剪辑从1分23.456秒开始15秒的视频,-c:copy 表示不编码,视频直接复制
- 视频格式转换
ffmpeg -i video.mp4 video.avi
表示将mp4格式视频转换为avi格式,ffmpeg会根据文件后缀自动判断视频格式类型
- 将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
该命令会将直播流保存到本地
- 视频转图片
ffmpeg -i 1.mp4 ./png/%04d.png
将1.mp4转换成图片,并保存到当前目录的png文件夹下。
图片的数目是根据视频的帧率定的。比如15秒的视频,帧率为30,转换后图片的数目 = 15 x 30 = 450。数目有时候没有那么精确,但是差别不大。%04d表示图片的命名格式是4位数字,不足4位,前面补0。
- 图片转视频
ffmpeg -i ./png/%04d.png 1.mp4
将png目录下的图片转换为视频。
测试过程中,默认的帧率是25,像素格式是yuv444p。也可以自己设置这些参数。
ffmpeg -r 30 -i ./png/%04d.png -pix_fmt yuv420p 420.mp4
上面的命令表示,将图片转为视频,帧率为30,像素格式为yuv420p。
- 提取视频
ffmpeg -i va.mp4 -an -c:v copy vo.mp4
提取文件中的视频,-an 表示去掉音频;-c:v copy 表示复制视频,如果不加该选项,将进行重新编码,速度较慢。
- 提取音频
ffmpeg -i va.mp4 -vn -c:a copy ao.aac
提取文件中的视频,-vn 表示去掉音频;-c:a copy 表示复制视频,如果不加该选项,将进行重新编码,速度较慢。
以后碰到音视频可以直接复制的,就加上复制选项,速度很快。
- 合并音频和视频
ffmpeg -i audio.mp3 -i video.mp4 -c copy va.mp4
将音频和视频合并。-c copy 表示直接复制,如果不加该选项,将进行重新编码,速度较慢。
- 视频拼接
把需要拼接的视频文件名称写到一个文件中
video.txt内容如下:
file '1.mp4'
file '2.mp4'
ffmpeg -f concat -i video.txt -c copy concat.mp4
上面命令将1.mp4 和 2.mp4合并成一个视频文件。
- 视频添加水印
ffmpeg -i va.mp4 -vf "drawtext=text='Logo':fontcolor=white:fontsize=24:x=100:y=100" -c:a copy text.mp4
在视频上添加"Logo"文字水印,字体颜色为白色,字体大小为24,位于(100,100)处。
这是使用滤镜来添加的,比较简单。添加文字需要ffmpeg 编译的时候增加 --enable-libfreetype 选项。
也可以添加图片水印,如下:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=50:50" output.mp4
该watermark.png为水印图片。
11、视频去水印
ffmpeg -i input.mp4 -filter_complex "[0:v]delogo=x=420:y=920:w=1070:h=60" -ss 00:00:37 -to 00:05:17 -c:a copy output.mp4
该命令表示通过滤镜去除水印,水印的位置为(x,y),尺寸为wxh。视频的范围为从00:00:37开始,到00:05:17结束。
这种方式其实是用水印附近的像素填充水印的位置,对于纯色位置效果是可以的,对于一般的视频效果不好,如下图:

对于视频中的硬水印,目前感觉没有更好的办法。网上很多AI去水印的,效果也不好。如果有好的思路,欢迎交流。