javaCV视频添加水印
时间: 2023-06-29 07:06:31 浏览: 101
要在视频中添加水印,可以使用JavaCV库中的FFmpegFrameRecorder和FFmpegFrameFilter类。以下是一个简单的Java代码示例:
```java
import org.bytedeco.javacpp.Loader;
import org.bytedeco.javacv.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class VideoWatermarkAdder {
public static void main(String[] args) throws FrameGrabber.Exception, FrameFilter.Exception, FrameRecorder.Exception, IOException {
// 加载JavaCV依赖库
Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
// 输入视频文件路径
String inputFile = "input.mp4";
// 输出视频文件路径
String outputFile = "output.mp4";
// 水印图片路径
String watermarkFile = "watermark.png";
// 创建视频源
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile);
grabber.start();
// 创建视频目标
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
recorder.setFrameRate(grabber.getFrameRate());
recorder.setVideoCodec(grabber.getVideoCodec());
recorder.setAudioCodec(grabber.getAudioCodec());
recorder.start();
// 创建水印过滤器
FFmpegFrameFilter filter = new FFmpegFrameFilter("movie=" + watermarkFile + ":overlay=10:10", grabber.getImageWidth(), grabber.getImageHeight());
filter.start();
// 逐帧读取视频并添加水印后写入目标视频
Frame frame;
while ((frame = grabber.grabFrame()) != null) {
// 添加水印
filter.push(frame);
Frame filteredFrame = filter.pull();
// 写入目标视频
recorder.record(filteredFrame);
}
// 关闭资源
filter.stop();
recorder.stop();
grabber.stop();
// 显示输出文件路径
System.out.println("Output file saved to: " + new File(outputFile).getAbsolutePath());
}
}
```
该代码将在视频的左上角添加一个水印,并将处理后的视频保存到指定的输出文件路径。你需要将输入视频路径、输出视频路径和水印图片路径替换为你自己的路径。