video_compress_kit 0.0.1 copy "video_compress_kit: ^0.0.1" to clipboard
video_compress_kit: ^0.0.1 copied to clipboard

Hardware-accelerated video compression for Flutter using native platform APIs. Zero binary bloat — uses MediaCodec on Android and VideoToolbox on iOS.

video_compress_kit #

pub package License: MIT

Hardware-accelerated video compression for Flutter — zero binary bloat, no bundled FFmpeg.

Built by ikolvi.com.

Features #

  • Compress videos with five quality presets (or custom bitrate/resolution)
  • Get media info — resolution, duration, bitrate, file size, etc.
  • Extract thumbnails — single-frame JPEG at any timestamp
  • Progress stream — real-time 0 → 100 % updates
  • Cancel — abort a running compression at any time
  • Estimate file size — predict output size before compressing

Installation #

dependencies:
  video_compress_kit: ^0.0.1

No extra setup — platform implementations are auto-endorsed.

Quick Start #

import 'package:video_compress_kit/video_compress_kit.dart';

final kit = VideoCompressKit();

// 1️⃣  Compress a video
final result = await kit.compressVideo(
  '/path/to/video.mp4',
  config: const CompressionConfig(quality: VideoQuality.medium),
);
print('Output: ${result.outputPath}  (${result.fileSize} bytes)');

// 2️⃣  Get media info
final info = await kit.getMediaInfo('/path/to/video.mp4');
print('${info.width}×${info.height}  ${info.duration}s');

// 3️⃣  Extract a thumbnail at 2 seconds
final thumb = await kit.getThumbnail('/path/to/video.mp4', position: 2000);

// 4️⃣  Listen to progress
kit.compressionProgress.listen((p) {
  print('${(p * 100).toStringAsFixed(1)}%');
});

// 5️⃣  Cancel
await kit.cancelCompression();

Quality Presets #

Preset Max Resolution Typical Bitrate (1080p@30fps) Approx. 60 s file
veryLow 360p ~0.6 Mbps ~4 MB
low 480p ~1.3 Mbps ~10 MB
medium 720p ~2.8 Mbps ~21 MB
high 1080p ~9.3 Mbps ~70 MB
veryHigh Original ~12.4 Mbps ~93 MB

Values above are estimates from the built-in bits-per-pixel model. Actual sizes vary with content complexity.

Estimate Before Compressing #

final info = await kit.getMediaInfo(path);
final estimate = kit.estimateFileSize(info: info, quality: VideoQuality.medium);
print('≈ ${(estimate / 1024 / 1024).toStringAsFixed(1)} MB');

Custom Configuration #

const config = CompressionConfig(
  quality: VideoQuality.medium,   // base preset
  bitrate: 3000000,               // override: 3 Mbps
  width: 1280,                    // override: 1280 px
  height: 720,                    // override: 720 px
  frameRate: 30,
  includeAudio: true,
  deleteOrigin: false,
  outputPath: '/custom/output.mp4',
);

Supported Platforms #

Platform Implementation Native API
Android video_compress_kit_android MediaCodec + MediaMuxer
iOS video_compress_kit_ios AVFoundation / VideoToolbox

Architecture #

This is a federated Flutter plugin. App developers only import this package; platform implementations are resolved automatically at build time.

video_compress_kit              ← you import this
  └─ video_compress_kit_platform_interface
       ├─ video_compress_kit_android
       └─ video_compress_kit_ios

License #

MIT — see LICENSE.

0
likes
0
points
10
downloads

Publisher

verified publisherikolvi.com

Weekly Downloads

Hardware-accelerated video compression for Flutter using native platform APIs. Zero binary bloat — uses MediaCodec on Android and VideoToolbox on iOS.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, video_compress_kit_android, video_compress_kit_ios, video_compress_kit_platform_interface

More

Packages that depend on video_compress_kit

Packages that implement video_compress_kit