generateVideoRandomThumbnail method

Future<void> generateVideoRandomThumbnail(
  1. String videoPath,
  2. String outputPath
)

Implementation

Future<void> generateVideoRandomThumbnail(
  String videoPath,
  String outputPath,
) async {
  int? duration = await getVideoDuration(videoPath);
  if (duration == null || duration < 1) {
    debugPrint("Invalid duration. Cannot generate thumbnail.");
    return;
  }

  // Generate a random time within video duration
  int randomTime = Random().nextInt(duration);
  String timeFormat =
      "00:${(randomTime ~/ 60).toString().padLeft(2, '0')}:${(randomTime % 60).toString().padLeft(2, '0')}";

  try {
    ProcessResult result = await Process.run('ffmpeg', [
      '-i',
      videoPath,
      '-ss',
      timeFormat,
      '-vframes',
      '1',
      outputPath,
    ]);

    if (result.exitCode == 0) {
      debugPrint("Thumbnail generated at $timeFormat: $outputPath");
    } else {
      debugPrint("Error: ${result.stderr}");
    }
  } catch (e) {
    debugPrint("Exception: $e");
  }
}