java 通过FileUtil实现视频水印的代码
时间: 2023-11-17 14:08:17 浏览: 69
以下是使用 FileUtil 实现视频水印的 Java 代码示例:
```java
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
public class VideoWatermarkUtil {
// 视频文件路径
private static String videoPath = "/path/to/video.mp4";
// 水印图片路径
private static String watermarkPath = "/path/to/watermark.png";
// 生成的新视频路径
private static String newVideoPath = "/path/to/new_video.mp4";
// ffmpeg 命令路径
private static String ffmpegPath = "/path/to/ffmpeg";
public static void addWatermark() throws IOException, InterruptedException {
// 将水印图片复制到视频目录下
File watermarkFile = new File(watermarkPath);
File videoDir = new File(videoPath).getParentFile();
File newWatermarkFile = new File(videoDir, watermarkFile.getName());
FileUtils.copyFile(watermarkFile, newWatermarkFile);
// 执行 ffmpeg 命令添加水印
List<String> command = new ArrayList<>();
command.add(ffmpegPath);
command.add("-i");
command.add(videoPath);
command.add("-i");
command.add(newWatermarkFile.getAbsolutePath());
command.add("-filter_complex");
command.add("overlay=10:10");
command.add("-codec:a");
command.add("copy");
command.add(newVideoPath);
ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectErrorStream(true);
Process process = builder.start();
process.waitFor();
// 删除复制的水印图片
FileUtils.forceDelete(newWatermarkFile);
}
public static void main(String[] args) throws Exception {
addWatermark();
}
}
```
这段代码使用了 FFmpeg 命令行工具来实现视频添加水印,需要事先安装并配置好 FFmpeg 环境。具体实现思路是将水印图片复制到视频目录下,然后使用 FFmpeg 命令执行添加水印操作。最后删除复制的水印图片。
阅读全文