compressVideo static method

Future<XFile?> compressVideo(
  1. XFile file
)

Compress video

Implementation

static Future<XFile?> compressVideo(XFile file) async {
  final VideoEditorController controller = VideoEditorController.file(file);
  await controller.initialize();
  final ValueNotifier<double> exportingProgress = ValueNotifier<double>(0.0);
  XFile? video;
  try {
    video = await VideoUtils.exportVideo(
      onStatistics: (FFmpegStatistics stats) {
        exportingProgress.value =
            stats.getProgress(controller.trimmedDuration.inMilliseconds);
      },
      preset: VideoExportPreset.ultrafast,
      customInstruction:
          '-c:v h264_videotoolbox -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -crf 32 -r 30 -hls_list_size 5 -hls_time 5 -threads 10 ',
      controller: controller,
    );
  } catch (e) {
    log(e.toString());
  }
  await video?.saveTo(
      '${await getCacheDirectory()}/${DateTime.now().millisecondsSinceEpoch}.mp4');
  return video;
}