trimAudioBytes method

  1. @override
Future<Uint8List> trimAudioBytes(
  1. Uint8List inputData,
  2. String formatHint,
  3. Duration start,
  4. Duration end, {
  5. String outputFormat = 'wav',
})
override

Implementation

@override
Future<Uint8List> trimAudioBytes(
  Uint8List inputData,
  String formatHint,
  Duration start,
  Duration end, {
  String outputFormat = 'wav',
}) async {
  if (outputFormat == 'm4a') {
    throw AudioConversionException(
      'M4A encoding is not supported on web',
      details: 'Use outputFormat: "wav" instead.',
    );
  }
  try {
    final buffer = await _decodeAudioData(inputData);
    final sampleRate = buffer.sampleRate;
    final startSample = (start.inMilliseconds * sampleRate / 1000).round();
    final endSample = min((end.inMilliseconds * sampleRate / 1000).round(), buffer.length);
    return _encodeWav(buffer, startSample: startSample, endSample: endSample);
  } catch (e) {
    if (e is AudioConversionException) rethrow;
    throw AudioConversionException('Trim failed: $e');
  }
}