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');
  }
}