extractWaveform method
Future<WaveformData>
extractWaveform({
- required String inputPath,
- int samplesPerSecond = 100,
- 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'],
);
}