trimAudio method

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

Trims an audio file to the specified time range

Implementation

@override
Future<ConversionResult> trimAudio({
  required String inputPath,
  required String outputPath,
  required int startTimeMs,
  required int endTimeMs,
  required AudioFormat format,
  int bitRate = 128,
  int sampleRate = 44100,
  ProgressCallback? onProgress,
}) async {
  final Map<String, dynamic> arguments = {
    'inputPath': inputPath,
    'outputPath': outputPath,
    'startTimeMs': startTimeMs,
    'endTimeMs': endTimeMs,
    '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'] == 'trim') {
        onProgress(data['progress']?.toDouble() ?? 0.0);
      }
    });
  }
  final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
    'trimAudio',
    arguments,
  );
  final Map<String, dynamic> trimResult = Map<String, dynamic>.from(
    result ?? {},
  );

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