compressVideo method

Future<MediaInfo?> compressVideo(
  1. String path, {
  2. VideoQuality quality = VideoQuality.DefaultQuality,
  3. bool deleteOrigin = false,
  4. int? startTime,
  5. int? duration,
  6. bool? includeAudio,
  7. int frameRate = 30,
})

compress video from path compress video from path return Future<MediaInfo>

you can choose its quality by quality, determine whether to delete his source file by deleteOrigin optional parameters startTime duration includeAudio frameRate

example

final info = await _flutterVideoCompress.compressVideo(
  file.path,
  deleteOrigin: true,
);
debugPrint(info.toJson());

Implementation

Future<MediaInfo?> compressVideo(
  String path, {
  VideoQuality quality = VideoQuality.DefaultQuality,
  bool deleteOrigin = false,
  int? startTime,
  int? duration,
  bool? includeAudio,
  int frameRate = 30,
}) async {
  if (isCompressing) {
    throw StateError('''VideoCompress Error:
    Method: compressVideo
    Already have a compression process, you need to wait for the process to finish or stop it''');
  }

  if (compressProgress$.notSubscribed) {
    debugPrint('''VideoCompress: You can try to subscribe to the
    compressProgress\$ stream to know the compressing state.''');
  }

  // ignore: invalid_use_of_protected_member
  setProcessingStatus(true);
  final jsonStr = await _invoke<String>('compressVideo', {
    'path': path,
    'quality': quality.index,
    'deleteOrigin': deleteOrigin,
    'startTime': startTime,
    'duration': duration,
    'includeAudio': includeAudio,
    'frameRate': frameRate,
  });

  // ignore: invalid_use_of_protected_member
  setProcessingStatus(false);

  if (jsonStr != null) {
    final jsonMap = json.decode(jsonStr);
    return MediaInfo.fromJson(jsonMap);
  } else {
    return null;
  }
}