generateVideoRandomThumbnail function

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

Generate video thumbnail at a random timestamp

Implementation

Future<void> generateVideoRandomThumbnail(String videoPath, String outputPath) async {
  int? duration = await getVideoDuration(videoPath);
  if (duration == null || duration < 1) {
    print("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) {
      print("Thumbnail generated at $timeFormat: $outputPath");
    } else {
      print("Error: ${result.stderr}");
    }
  } catch (e) {
    print("Exception: $e");
  }
}