ffmpeg 给视频或者图片添加水印和马赛克的方法

可以使用 FFmpeg 给视频或图片添加水印和马赛克。以下是具体方法:

  1. 添加水印

如果需要给视频添加水印,可以使用 overlay 滤镜。该滤镜将两个输入叠加在一起,即将视频和水印画面结合在一起。以下是一个简单的例子:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

其中 -i input.mp4 表示指定输入文件,-i watermark.png 表示指定水印文件。filter_complex 是用于连接多个滤镜的语法,overlay=10:10 指定水印文件在视频画面上的位置,这里是相对于左上角偏移 10 个像素的位置。最后生成新的视频文件 output.mp4。

如果需要调整水印的大小、透明度等属性,可以加入不同的参数进行设置。比如:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10:alpha=0.5" output.mp4

其中 WH 表示视频画面的宽度和高度,wh 分别表示水印图片的宽度和高度。alpha=0.5 表示设置水印透明度为 0.5。

如果需要给图片添加水印,可以使用类似的命令:

ffmpeg -i input.jpg -i watermark.png -filter_complex "overlay=10:10" output.jpg
  1. 添加马赛克

如果需要给视频或图片添加马赛克,可以使用 boxblur 滤镜。该滤镜将指定区域变成模糊效果,从而达到马赛克的效果。以下是一个简单的例子:

ffmpeg -i input.mp4 -filter_complex "[0:v]boxblur=10[blur];[blur]crop=200:200:300:300,boxblur=10[cropped];[0:v][cropped]overlay=300:300" output.mp4

其中 -i input.mp4 表示指定输入文件。[0:v]boxblur=10[blur] 表示对视频画面进行模糊处理,模糊半径为 10 像素,保存为一个中间变量 blur。[blur]crop=200:200:300:300,boxblur=10[cropped] 表示对模糊后的视频画面进行裁剪,只保留左上角起始坐标为 (300, 300),宽高为 200 的区域,并再次进行模糊处理,保存为一个中间变量 cropped。最后使用 overlay 滤镜将原始视频和裁剪后的带马赛克画面叠加在一起,生成新的视频文件 output.mp4。

如果需要调整马赛克的大小、位置、形状等属性,可以加入不同的参数进行设置。

如果视频中的水印和马赛克无法通过软件工具进行剔除,可以尝试使用 FFmpeg 或类似的工具,在视频上添加其他的图层来遮盖住这些区域。

以下是使用 FFmpeg 添加图层的方法:

  1. 准备好需要添加的图层,可以是一张图片、一段文字或另一个视频等。

  2. 在命令行中输入以下命令:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v][1:v] overlay=x=W-w-10:y=10" -c:a copy output.mp4

其中,-i input.mp4 表示指定输入文件,-i watermark.png 表示指定需要添加的图层文件。[0:v][1:v] 表示将输入文件和图层文件作为滤镜链的两个输入,overlay=x=W-w-10:y=10 表示使用 overlay 滤镜将图层添加到视频画面的指定位置上,这里的 (x, y) 表示图层左上角相对于视频画面左上角的距离,Ww 分别表示视频画面和图层的宽度。-c:a copy 表示保留视频文件中的音频流。最后生成新的视频文件 output.mp4。

  1. 根据需要进行调整,比如调整图层大小、位置、透明度等,可以在命令中加入不同的参数进行设置。

请注意,添加图层也有可能影响视频的视觉效果,因此需要根据实际情况谨慎使用。 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用FFmpeg视频图片水印,需要先安装FFmpeg并设置环境变量。然后,可以使用Java调用FFmpeg的命令行工具来实现添加图片水印的功能。以下是一个示例代码: ```java public class VideoUtils { /** * 给视频添加图片水印 * @param videoPath 视频文件路径 * @param imagePath 水印图片路径 * @param outputPath 输出文件路径 * @throws Exception */ public static void addImageWatermark(String videoPath, String imagePath, String outputPath) throws Exception { // 构造FFmpeg命令 List<String> command = new ArrayList<>(); command.add("ffmpeg"); command.add("-i"); command.add(videoPath); command.add("-i"); command.add(imagePath); command.add("-filter_complex"); command.add("[0:v][1:v]overlay=10:10"); command.add("-codec:a"); command.add("copy"); command.add(outputPath); // 执行FFmpeg命令 ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.start(); process.waitFor(); } } ``` 在上面的代码中,我们使用了FFmpeg的overlay过滤器来实现将水印图片叠加在视频上的功能。其中,`[0:v]`表示第一个输入文件的视频流,`[1:v]`表示第二个输入文件的视频流,`overlay=10:10`表示在视频的左上角叠加水印图片,并且水印图片的左上角坐标为(10, 10)。如果要调整水印图片的位置,可以修改`overlay`参数的值。 使用时,可以调用`VideoUtils.addImageWatermark()`方法来给视频添加水印,例如: ```java try { VideoUtils.addImageWatermark("input.mp4", "watermark.png", "output.mp4"); } catch (Exception e) { e.printStackTrace(); } ``` 其中,`input.mp4`是要添加水印视频文件,`watermark.png`是水印图片文件,`output.mp4`是输出文件路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值