generateVideo method

Future<void> generateVideo()

Genrates video in the output path.

Implementation

Future<void> generateVideo() async {
  String? outputPath = savePath ??
      await getApplicationDocumentsDirectory()
          .then((value) => value.path + '/');

  int time = DateTime.now().millisecond;

  String trimmedVideo =
      '$outputPath${'trimmed_$time'}.${outputFormat.toString().split(".").last}';

  String? outputVideo =
      '$outputPath${videoFileName ?? 'videowatermark_$time'}.${outputFormat.toString().split(".").last}';

  if (videoTrim != null) {
    double _progress = 0;
    await _trimVideo(
      trimmedVideo,
      (tempVideoSave) {
        if (tempVideoSave) {
          if (watermark != null) {
            _addWatermark(
              trimmedVideo,
              outputVideo,
              (outputVideoSave) {
                if (outputVideoSave) {
                  File(trimmedVideo).delete();
                  onSave?.call(outputVideo);
                }
              },
              (p) {
                progress?.call(_progress + p / 2);
              },
            );
          } else {
            onSave?.call(trimmedVideo);
          }
        }
      },
      (p) {
        if (watermark != null) {
          _progress = p / 2;
        } else {
          _progress = p;
        }
        progress?.call(_progress);
      },
    );
  } else {
    _addWatermark(
      sourceVideoPath,
      outputVideo,
      (outputVideoSave) {
        if (outputVideoSave) {
          onSave?.call(outputVideo);
        }
      },
      progress,
    );
  }
}