trimAudio method
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,
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'],
);
}