convertAudio method

  1. @override
Future<ConversionResult> convertAudio({
  1. required String inputPath,
  2. required String outputPath,
  3. required AudioFormat format,
  4. int bitRate = 128,
  5. int sampleRate = 44100,
  6. ProgressCallback? onProgress,
})
override

Converts an audio file to the specified format

Implementation

@override
Future<ConversionResult> convertAudio({
  required String inputPath,
  required String outputPath,
  required AudioFormat format,
  int bitRate = 128,
  int sampleRate = 44100,
  ProgressCallback? onProgress,
}) async {
  final Map<String, dynamic> arguments = {
    'inputPath': inputPath,
    'outputPath': outputPath,
    'format': format.name,
    'bitRate': bitRate,
    'sampleRate': sampleRate,
  };
  if (onProgress != null) {
    // Set up progress listener
    const EventChannel(
      'flutter_audio_toolkit/progress',
    ).receiveBroadcastStream().listen((dynamic data) {
      if (data is Map && data['operation'] == 'convert') {
        onProgress(data['progress']?.toDouble() ?? 0.0);
      }
    });
  }
  final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
    'convertAudio',
    arguments,
  );
  final Map<String, dynamic> conversionResult = Map<String, dynamic>.from(
    result ?? {},
  );

  return ConversionResult(
    outputPath: conversionResult['outputPath'],
    durationMs: conversionResult['durationMs'],
    bitRate: conversionResult['bitRate'],
    sampleRate: conversionResult['sampleRate'],
  );
}