flutter视频加水印

789 阅读1分钟

flutter视频加水印

flutter视频加水印比较简单主要使用的是video_watermark插件

一开始也是准备使用ffmpeg,但是执行ffmpeg命令的时候一直不好使,最后还是决定换这个插件

生成图片可以参考上一篇文章《图片加水印》将组件转换成图片

VideoWatermark videoWatermark = VideoWatermark(
      sourceVideoPath: video.path,// 视频地址路径
      watermark: Watermark(
          image: WatermarkSource.file(imgPath),// 加的水印地址路径
          watermarkAlignment: WatermarkAlignment.topRight,
          watermarkSize: WatermarkSize(700, 200),
          opacity: 0.8),
      onSave: (path) {
        // Get output file path
        print('**********************');
        print(path);
        print('**********************');
        print('添加水印成功');
        EasyLoading.dismiss();
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => FullVideo(
                      file: File(path!),
                      type: 'file',
                    ))).then((value) => {
              setState(() {
                img = value;
              })
            });
      },
      progress: (value) {
        // Get video generation progress
        print('进度');
        print(value);
      },
    );

注意:该插件只能添加图片水印,而且这里的视频路径和图片路径都是手机上的路径

想要加文字水印就必须先生成一张文字水印的图片再将这张图片加到视频中去,也需要调用图片加水印的工具类的方法,进行生成图片文件

ui.Image _image =
        await ImageLoaderUtils.imageLoader.getImageFromWidget(_globalKey);

    ///异步将这张图片保存在手机内部存储目录下
    String localImagePath =
        await ImageLoaderUtils.saveImageByUIImage(_image, Map());
    File fileaaa = File(localImagePath);
    print('水印地址');
    setState(() {
      img = fileaaa;
      imgPath = localImagePath;
    });