video_compress_v2
A new Flutter video compress support convert HDR video to SDR video. Compress videos, remove audio, manipulate thumbnails, and make your video compatible with all platforms through this lightweight and efficient library. 100% native code was used, we do not use FFMPEG as it is very slow, bloated and the GNU license is an obstacle for commercial applications.
Table of Contents
Lets Get Started
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies:
video_compress_v2: last-version
2. Install it
You can install packages from the command line:
with pub:
$ pub get
3. Import it
Now in your Dart code, you can use:
import 'package:video_compress_v2/video_compress.dart';
How to use
Imports
import 'package:video_compress_v2/video_compress.dart';
Video compression
MediaInfo mediaInfo = await VideoCompressV2.compressVideo(
path,
quality: VideoQuality.DefaultQuality,
deleteOrigin: false, // It's false by default
);
Check compress state
VideoQuality.isCompressing
Get memory thumbnail from VideoPath
final uint8list = await VideoCompressV2.getByteThumbnail(
videopath,
quality: 50, // default(100)
position: -1 // default(-1)
);
Get File thumbnail from VideoPath
final thumbnailFile = await VideoCompressV2.getFileThumbnail(
videopath,
quality: 50, // default(100)
position: -1 // default(-1)
);
Get media information
final info = await VideoCompressV2.getMediaInfo(videopath);
delete all cache files
- Delete all files generated by this will delete all files located at 'video_compress', you shoule ought to know what are you doing.
await VideoCompressV2.deleteAllCache()
Listen the compression progress
class _Compress extends State<Compress> {
Subscription _subscription;
@override
void initState() {
super.initState();
_subscription =
VideoCompressV2.compressProgress$.subscribe((progress) {
debugPrint('progress: $progress');
});
}
@override
void dispose() {
super.dispose();
_subscription.unsubscribe();
}
}
TODO
- Add the trim video function
- Add cancel function to Android
Methods
| Functions | Parameters | Description | Returns |
|---|---|---|---|
| getByteThumbnail | String pathvideo path, int quality(1-100)thumbnail quality, int positionGet a thumbnail from video position |
get thumbnail from video path |
Future<Uint8List> |
| getFileThumbnail | String pathvideo path, int quality(1-100)thumbnail quality, int positionGet a thumbnail from video position |
get thumbnail file from video path |
Future<File> |
| getMediaInfo | String pathvideo path |
get media information from video path |
Future<MediaInfo> |
| compressVideo | String pathvideo path, VideoQuality qualitycompressed video quality, bool deleteOrigindelete the origin video, int startTimecompression video start time, int durationcompression video duration from start time, bool includeAudiois include audio in compressed video, int frameRatecompressed video frame rate |
compression video at origin video path |
Future<MediaInfo> |
| cancelCompression | none |
cancel compressing | Future<void> |
| deleteAllCache | none |
Delete all files generated by 'video_compress' will delete all files located at 'video_compress' | Future<bool> |
Subscriptions
| Subscriptions | Description | Stream |
|---|---|---|
| compressProgress$ | Subscribe the compression progress steam | double progress |
Contribute
Contributions are always welcome!
acknowledgment
Inspired by the flutter_ffmpeg library. https://github.com/rurico/flutter_video_compress https://github.com/jonataslaw/VideoCompress.git
Made with ❤ by Flutter team at Tastech-asia