getThumbnailFileAsync method

Future<FFMpegHelperSession> getThumbnailFileAsync({
  1. required String videoPath,
  2. required Duration fromDuration,
  3. required String outputPath,
  4. String? ffmpegPath,
  5. FilterGraph? filterGraph,
  6. int qualityPercentage = 100,
  7. dynamic statisticsCallback(
    1. Statistics statistics
    )?,
  8. dynamic onComplete(
    1. File? outputFile
    )?,
})

Implementation

Future<FFMpegHelperSession> getThumbnailFileAsync({
  required String videoPath,
  required Duration fromDuration,
  required String outputPath,
  String? ffmpegPath,
  FilterGraph? filterGraph,
  int qualityPercentage = 100,
  Function(Statistics statistics)? statisticsCallback,
  Function(File? outputFile)? onComplete,
}) async {
  int quality = 1;
  if ((qualityPercentage > 0) && (qualityPercentage < 100)) {
    quality = (((100 - qualityPercentage) * 31) / 100).ceil();
  }
  final FFMpegCommand cliCommand = FFMpegCommand(
    returnProgress: true,
    inputs: [FFMpegInput.asset(videoPath)],
    args: [
      const OverwriteArgument(),
      SeekArgument(fromDuration),
      const CustomArgument(["-frames:v", '1']),
      CustomArgument(["-q:v", '$quality']),
    ],
    outputFilepath: outputPath,
    filterGraph: filterGraph,
  );
  FFMpegHelperSession session = await runAsync(
    cliCommand,
    onComplete: onComplete,
    statisticsCallback: statisticsCallback,
  );
  return session;
}