今天继续学习ffmpeg工具,上篇博客主要讲的是ffmpeg对音频和视频的处理,今天这篇是对图像的处理,没想到也能操作。它的命令和处理音视频的一样,都是命令行。能够处理图像的尺寸、裁剪、旋转、模糊、去噪、加水印和生成缩略图等。
1、图像处理命令
1.1、调整图像大小
ffmpeg -i input.jpg -vf scale=640:360 output.jpg
上述命令将输入图像 input.jpg 调整为分辨率为 640x360 的输出图像 output.jpg。
1.2、图像裁剪
ffmpeg -i input.jpg -vf crop=640:360:80:60 output.jpg
上述命令将输入图像 input.jpg 裁剪为宽度 640,高度 360,x 轴偏移量为 80,y 轴偏移量为 60 的输出图像 output.jpg。
1.3、图像旋转
ffmpeg -i input.jpg -vf "transpose=1" output.jpg
上述命令将输入图像 input.jpg 逆时针旋转 90 度,输出图像 output.jpg。
1.4、图像加水印
ffmpeg -i input.jpg -i watermark.png -filter_complex "overlay=10:10" output.jpg
上述命令将输入图像 input.jpg 加上水印图像 watermark.png,水印位置为 (10,10),输出图像 output.jpg。
1.5、图像模糊
ffmpeg -i input.jpg -filter_complex "boxblur=5:1" output.jpg
上述命令将输入图像 input.jpg 进行模糊处理,模糊程度为 5,模糊类型为 boxblur,输出图像 output.jpg。
1.6、图像去噪
ffmpeg -i input.jpg -filter_complex "removegrain=20" output.jpg
上述命令将输入图像 input.jpg 进行去噪处理,去噪程度为 20,输出图像 output.jpg。
1.7、图像缩略图
ffmpeg -i input.jpg -vf "thumbnail,scale=640:360" -frames:v 1 output.jpg
上述命令将输入图像 input.jpg 转换为分辨率为 640x360 的缩略图,输出图像 output.jpg。
2、视频截图
视频截图是将视频中的某一帧或多帧图像提取出来,生成图片文件的过程。在 FFmpeg 中,使用 -ss 参数指定截取的时间点,使用 -vframes 参数指定截取的帧数,使用 -r 参数指定帧率。下面是一些常见的视频截图操作:
2.1、截取视频的第一帧
ffmpeg -i input.mp4 -ss 00:00:00.000 -vframes 1 output.jpg
2.2、截取视频中的其中一帧
ffmpeg -i input.mp4 -ss 00:00:10.000 -vframes 1 output.jpg
其中 -ss 参数指定截取视频的时间点,-vframes 1 指定只截取一帧图像,output.jpg 指定输出文件名和格式。
2.3、截取视频中的多帧
ffmpeg -i input.mp4 -ss 00:00:10.000 -t 5 -r 1 -f image2 output_%03d.jpg
其中 -ss 参数指定截取视频的起始时间点,-t 参数指定截取视频的时长,-r 1 指定每秒截取一帧,-f image2 指定输出为图片格式,output_%03d.jpg 指定输出文件名,%03d 表示输出文件名中的数字以三位数显示,逐个递增。
2.4、截取视频中的某个时间段内的多帧
ffmpeg -i input.mp4 -ss 00:00:10.000 -t 5 -r 1 -f image2 output_%03d.jpg
其中 -ss 参数指定截取视频的起始时间点,-t 参数指定截取视频的时长,-r 1 指定每秒截取一帧,-f image2 指定输出为图片格式,output_%03d.jpg 指定输出文件名,%03d 表示输出文件名中的数字以三位数显示,逐个递增。
2.5、截取视频中的关键帧
ffmpeg -i input.mp4 -vf select="eq(pict_type\,I)" -vframes 1 output.jpg
其中 -vf select="eq(pict_type\,I)" 参数指定选择视频中的关键帧作为截图,-vframes 1 指定只截取一帧图像,output.jpg 指定输出文件名和格式。
3、视频水印添加
在视频中添加水印可以保护版权,防止他人盗用或修改视频。FFmpeg提供了多种方式来添加水印,下面是一些常用的命令示例:
3.1、添加文本水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=Arial.ttf:text='My Watermark':fontcolor=white:fontsize=24:x=10:y=10" output.mp4
这个命令会在输入视频的左上角添加一个白色的"My Watermark"文本水印。
3.2、添加图片水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
这个命令将"watermark.png"图片叠加在输入视频的左上角。
3.3、添加透明图片水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10:alpha=0.5" output.mp4
这个命令与前一个命令类似,但是"watermark.png"图片有50%的透明度。
3.4、添加滚动文本水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=Arial.ttf:text='My Watermark':fontcolor=white:fontsize=24:x=w-tw-10:y=h-th-10:enable='between(t,5,15)'" output.mp4
这个命令将"My Watermark"文本水印添加在输入视频的右下角,从第5秒开始到第15秒结束,而且水印是在这期间滚动的。
这些命令只是FFmpeg添加水印的众多方法中的一部分。通过这些命令的示例,我们可以了解如何添加文本水印、图片水印以及一些高级选项,如水印位置、透明度和滚动文本水印等。
4、视频添加特效
在 FFmpeg 中,我们可以使用滤镜来添加各种视频特效。下面简单介绍几个常见的视频特效:
4.1、旋转特效
使用 rotate 滤镜可以对视频进行旋转。比如以下命令将视频逆时针旋转90度:
ffmpeg -i input.mp4 -vf "rotate=PI/2" output.mp4
4.2、镜像特效
使用 hflip 和 vflip 滤镜可以实现视频水平和垂直镜像。比如以下命令将视频水平镜像:
ffmpeg -i input.mp4 -vf "hflip" output.mp4
4.3、模糊特效
使用 boxblur 滤镜可以对视频进行模糊处理。比如以下命令对视频进行模糊处理:
ffmpeg -i input.mp4 -vf "boxblur=10:2" output.mp4
4.4、缩放特效
使用 scale 滤镜可以对视频进行缩放。比如以下命令将视频缩小一半:
ffmpeg -i input.mp4 -vf "scale=iw/2:ih/2" output.mp4
4.5、灰度特效
使用 colorchannelmixer 滤镜可以将视频转换为灰度图像。比如以下命令将视频转换为灰度图像:
ffmpeg -i input.mp4 -vf "colorchannelmixer=0.3:0.4:0.3:0:0.3:0.4:0.3:0:0.3:0.4:0.3" output.mp4
在 colorchannelmixer 滤镜中,第一行表示红色通道、绿色通道、蓝色通道的转换系数,第二行表示常数项。