Flutter如何通过FFmpeg添加文字水印
我想在Flutter应用中通过FFmpeg给视频添加文字水印,但不知道具体怎么实现。请问应该如何集成FFmpeg到Flutter项目中?添加文字水印的具体FFmpeg命令参数该怎么写?有没有完整的代码示例可以参考?另外,这个方案在iOS和Android平台上都能正常使用吗?
2 回复
在Flutter中,可通过flutter_ffmpeg包调用FFmpeg命令。示例代码:
import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';
final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg();
_flutterFFmpeg.execute("-i input.mp4 -vf \"drawtext=text='水印文字':x=10:y=10:fontsize=24:fontcolor=white\" output.mp4");
参数说明:drawtext添加文字,设置位置、大小和颜色。
更多关于Flutter如何通过FFmpeg添加文字水印的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中通过FFmpeg添加文字水印,推荐使用 flutter_ffmpeg 库。以下是详细步骤和示例代码:
步骤1:添加依赖
在 pubspec.yaml 中添加:
dependencies:
flutter_ffmpeg: ^0.4.2
步骤2:实现代码
import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';
final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg();
void addTextWatermark() async {
String inputPath = 'input.mp4';
String outputPath = 'output.mp4';
// FFmpeg命令:在视频中央添加白色文字水印,字体大小30
String command = '-i $inputPath -vf "drawtext=text=\'Your Watermark\':fontcolor=white:fontsize=30:x=(w-text_w)/2:y=(h-text_h)/2" $outputPath';
// 执行命令
int result = await _flutterFFmpeg.execute(command);
if (result == 0) {
print('水印添加成功!输出路径: $outputPath');
} else {
print('处理失败,错误码: $result');
}
}
关键参数说明:
- text:水印文字内容(用单引号包裹)
- fontcolor:文字颜色(white/red/#FFFFFF等)
- fontsize:字体大小
- x/y:位置(示例为居中)
- 更多参数:
fontfile(字体文件)、shadowcolor(阴影)等
其他位置示例:
- 左上角:
x=10:y=10 - 右下角:
x=w-text_w-10:y=h-text_h-10
注意事项:
- 需要处理文件读写权限
- 建议在真机上测试(模拟器可能兼容性问题)
- 复杂需求可参考FFmpeg官方文档调整滤镜参数
通过这种方法可以高效地为视频添加自定义文字水印。

