native_audio_trimmer 0.0.5 copy "native_audio_trimmer: ^0.0.5" to clipboard
native_audio_trimmer: ^0.0.5 copied to clipboard

A Flutter plugin for trimming audio files on Android and iOS without using FFmpeg.

native_audio_trimmer #

A Flutter plugin for trimming audio files on both Android and iOS platforms without using FFmpeg.

Features #

  • Trim audio files by specifying start and end times
  • Native implementation for iOS (using AVAssetExportSession)
  • Native implementation for Android (using MediaExtractor, MediaCodec, and MediaMuxer)
  • No FFmpeg dependency, resulting in smaller app size and faster builds
  • Support for multiple audio formats

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  native_audio_trimmer: ^0.0.4

Android #

Add the storage permissions to your AndroidManifest.xml if you're targeting Android 12 or below and need to access files outside of your app's directory:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

For Android 13+ (API level 33+), you may need to request more specific permissions depending on your use case:

<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

iOS #

No additional setup is required for iOS.

Usage #

import 'package:native_audio_trimmer/native_audio_trimmer.dart';

// Create an instance of AudioTrimmer
final audioTrimmer = AudioTrimmer();

// Trim an audio file
try {
  String inputPath = '/path/to/input.mp3';
  String outputPath = '/path/to/output.m4a';
  
  // Trim from 10 seconds to 30 seconds
      // Trim audio
      final trimmedFilePath = await NativeAudioTrimmer.trimAudio(
        inputPath: inputPath,
        outputPath: outputPath,
        startTimeInSeconds: 10.0, // Start time in seconds,
        endTimeInSeconds: 30.0, // End time in seconds,
      );
  
  print('Trimmed audio saved at: $trimmedFilePath');
} catch (e) {
  print('Error trimming audio: $e');
}

Example #

Check out the example app in the example folder to see a complete implementation of audio file selection, trimming, and playback.

To run the example app:

cd example
flutter run

Implementation Details #

iOS #

On iOS, this plugin uses the native AVAssetExportSession to perform audio trimming operations. The resulting audio file is saved in the .m4a format.

Android #

On Android, the plugin uses a combination of MediaExtractor, MediaCodec, and MediaMuxer to extract, process, and save the audio data between the specified start and end times.

Supported Formats #

Input Formats #

  • MP3
  • M4A/AAC
  • WAV
  • OGG (Android only)
  • FLAC

Output Format #

  • M4A (AAC) for both platforms

Limitations #

  • The plugin currently only outputs to M4A format
  • Very large audio files may require additional memory
  • Some exotic audio formats might not be supported by the native APIs

Contributing #

Contributions are welcome! If you find a bug or want a feature, please open an issue on GitHub.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

2
likes
160
points
404
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for trimming audio files on Android and iOS without using FFmpeg.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on native_audio_trimmer