executeFFmpegIO method

Future<XFile> executeFFmpegIO({
  1. required String execute,
  2. required String outputPath,
  3. String? outputMimeType,
  4. void onStatistics(
    1. FFmpegStatistics
    )?,
})

Implementation

Future<XFile> executeFFmpegIO({
  required String execute,
  required String outputPath,
  String? outputMimeType,
  void Function(FFmpegStatistics)? onStatistics,
}) {
  final Completer<XFile> completer = Completer<XFile>();
  debugPrint('FFmpeg command :${execute}');
  FFmpegKit.executeAsync(
    execute,
    (FFmpegSession session) async {
      final ReturnCode? code = await session.getReturnCode();

      if (ReturnCode.isSuccess(code)) {
        completer.complete(XFile(outputPath, mimeType: outputMimeType));
      } else {
        final String state = FFmpegKitConfig.sessionStateToString(
          await session.getState(),
        );
        completer.completeError(
          Exception(
            'FFmpeg process exited with state $state and return code $code.'
            '${await session.getOutput()}',
          ),
        );
      }
    },
    null,
    onStatistics != null
        ? (Statistics s) => onStatistics(FFmpegStatistics.fromIOStatistics(s))
        : null,
  );

  return completer.future;
}