extractWaveform method

  1. @override
Future<WaveformData> extractWaveform({
  1. required String inputPath,
  2. int samplesPerSecond = 100,
  3. ProgressCallback? onProgress,
})
override

Extracts waveform data from an audio file

Implementation

@override
Future<WaveformData> extractWaveform({
  required String inputPath,
  int samplesPerSecond = 100,
  ProgressCallback? onProgress,
}) async {
  final Map<String, dynamic> arguments = {
    'inputPath': inputPath,
    'samplesPerSecond': samplesPerSecond,
  };
  if (onProgress != null) {
    // Set up progress listener
    const EventChannel(
      'flutter_audio_toolkit/progress',
    ).receiveBroadcastStream().listen((dynamic data) {
      if (data is Map && data['operation'] == 'waveform') {
        onProgress(data['progress']?.toDouble() ?? 0.0);
      }
    });
  }
  final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
    'extractWaveform',
    arguments,
  );
  final Map<String, dynamic> waveformResult = Map<String, dynamic>.from(
    result ?? {},
  );

  return WaveformData(
    amplitudes: List<double>.from(waveformResult['amplitudes']),
    sampleRate: waveformResult['sampleRate'],
    durationMs: waveformResult['durationMs'],
    channels: waveformResult['channels'],
  );
}