flutter中使用ffmpeg_kit_flutter依赖 完成水印功能并保存到本地
在Flutter中使用ffmpeg_kit_flutter
插件可以实现视频水印功能并将其保存到本地。以下是一个简单的示例代码:
首先,在pubspec.yaml
文件中添加ffmpeg_kit_flutter
依赖:
dependencies:
ffmpeg_kit_flutter: ^2.2.2
然后,使用以下代码来添加水印并保存视频:
import 'package:ffmpeg_kit_flutter/ffmpeg_kit_flutter.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter/services.dart' show ByteData, DirectoryException;
Future<void> addWatermarkToVideo(String inputVideoPath, String outputVideoPath) async {
// 获取应用文件存储目录
final directory = await getApplicationDocumentsDirectory();
final watermarkImagePath = '${directory.path}/watermark.png';
// 设置水印图片路径,这里需要提前将水印图片保存到该路径
// 构建FFmpeg命令
final String ffmpegCommand =
'-i $inputVideoPath -i $watermarkImagePath -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" -c:v libx264 -c:a copy $outputVideoPath';
// 执行FFmpeg命令
FFmpegKit.execute(ffmpegCommand).then((session) {
// 处理完成事件
final state = session.getState();
final failStackTrace = session.getFailStackTrace();
if (!state.isSuccess) {
// 处理错误
print('Failed to execute command: $state, $failStackTrace');
} else {
// 成功保存到outputVideoPath
print('Succeed to save the watermarked video.');
}
}).catchError((error) {
print('Failed to execute the command: $error');
});
}
// 使用示例
void main() {
// 假设inputVideoPath是用户选择的视频文件路径
final inputVideoPath = 'path/to/input/video.mp4';
final outputVideoPath = 'path/to/output/video.mp4';
addWatermarkToVideo(inputVideoPath, outputVideoPath);
}
确保你有正确的视频文件路径和水印图片路径,并且已经请求了必要的读写权限。这段代码使用FFmpeg将水印图片添加到视频的右下角,并保存到新的视频文件。你需要根据实际情况调整水印位置的坐标。
评论已关闭