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

注意事项:

  1. 需要处理文件读写权限
  2. 建议在真机上测试(模拟器可能兼容性问题)
  3. 复杂需求可参考FFmpeg官方文档调整滤镜参数

通过这种方法可以高效地为视频添加自定义文字水印。

回到顶部