smart_video_thumbnail 0.6.0
smart_video_thumbnail: ^0.6.0 copied to clipboard
High-performance Flutter plugin for extracting video thumbnails using native FFmpeg engine. Supports all video formats (MP4, AVI, MKV, FLV, etc.) with CPU-only decoding.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.6.0 - 2026-02-18 #
🎉 Added #
- Windows Platform Support: Full implementation for Windows desktop
- Native Media Foundation framework integration
- Support for x64 architecture
- No external dependencies required (uses system frameworks)
- Smaller binary size compared to Android (no FFmpeg library)
🔧 Changed #
- Native Library upgraded to smart-ffmpeg-android v1.0.6 from JitPack
- Architecture: Documented per-platform backends (FFmpeg for Android, AVFoundation for iOS/macOS, Media Foundation for Windows)
✅ Benefits #
- ✅ Full cross-platform support (Android + iOS + macOS + Windows)
- ✅ Native performance on all platforms
- ✅ Consistent API across platforms
- ✅ No external dependencies (no FFmpeg CLI required - embedded in plugin)
0.4.0 - 2026-02-16 #
🎉 Added #
- iOS Platform Support: Full implementation for iOS mobile devices
- Native AVFoundation framework integration
- Support for arm64 and armv7 architectures
- No external dependencies required (uses system frameworks)
- Smaller binary size compared to Android (no FFmpeg library)
- iOS Example App: Added iOS platform to example application
- Photo library permissions configured in Info.plist
- Full feature parity with Android and macOS versions
- Documentation: Comprehensive iOS implementation guide
- Setup instructions
- Architecture overview
- Performance benchmarks
- Troubleshooting guide
- Platform comparison
🔧 Changed #
- Platform Support: Extended from Android + macOS to Android + iOS + macOS
- README: Updated with iOS setup and requirements
- Architecture: Documented multi-backend approach (FFmpeg for Android, AVFoundation for iOS/macOS)
📦 Technical Details #
- iOS Backend: AVFoundation (Swift)
- Minimum iOS Version: 12.0
- Required Permissions:
NSPhotoLibraryUsageDescription- For accessing photo libraryNSPhotoLibraryAddUsageDescription- For saving thumbnails (optional)
- Supported Formats: All system-supported codecs (MP4, MOV, M4V, etc.)
✅ Benefits #
- ✅ Full cross-platform support (Android + iOS + macOS)
- ✅ Native performance on all platforms
- ✅ Consistent API across platforms
- ✅ No external dependencies on iOS/macOS
- ✅ Smaller binary size on iOS/macOS
📚 New Documentation #
IOS_GUIDE.md- Complete iOS implementation guide- Updated README with iOS platform information
- iOS-specific troubleshooting section
- iOS unit tests
0.3.0 - 2026-02-16 #
🎉 Added #
- macOS Platform Support: Full implementation for macOS desktop
- Native AVFoundation framework integration
- Support for x86_64 and arm64 (Apple Silicon) architectures
- No external dependencies required (uses system frameworks)
- Smaller binary size compared to Android (no FFmpeg library)
- macOS Example App: Added macOS platform to example application
- File access entitlements configured
- Full feature parity with Android version
- Documentation: Comprehensive macOS implementation guide
- Setup instructions
- Architecture overview
- Performance benchmarks
- Troubleshooting guide
- Platform comparison
🔧 Changed #
- Platform Support: Extended from Android-only to Android + macOS
- README: Updated with macOS setup and requirements
- Architecture: Documented dual-backend approach (FFmpeg for Android, AVFoundation for macOS)
📦 Technical Details #
- macOS Backend: AVFoundation (Swift)
- Minimum macOS Version: 10.14 (Mojave)
- Required Entitlements:
com.apple.security.files.user-selected.read-onlycom.apple.security.files.user-selected.read-write
- Supported Formats: All system-supported codecs (MP4, MOV, M4V, etc.)
✅ Benefits #
- ✅ Cross-platform support (Android + macOS)
- ✅ Native performance on both platforms
- ✅ Consistent API across platforms
- ✅ No external dependencies on macOS
- ✅ Smaller binary size on macOS
📚 New Documentation #
MACOS_GUIDE.md- Complete macOS implementation guide- Updated README with platform comparison
- macOS-specific troubleshooting section
0.2.0 - 2026-02-13 #
🎉 Added #
- Thumbnail Caching: Automatic file-based caching system for generated thumbnails
- Cache thumbnails to avoid regeneration
- Persistent cache across app restarts
- Cache management methods:
clearCache(),removeCacheForVideo(),getCacheStats() - Optional
useCacheparameter (default: true)
- Progress Callbacks: Real-time progress updates during thumbnail generation
- Optional
onProgresscallback parameter - Progress values from 0.0 to 1.0
- Instant 100% progress for cache hits
- Optional
- Usage Examples: Comprehensive code examples
- ListView example with thumbnails
- GridView example with caching
- Cache management example with statistics
🔧 Changed #
- Library Size Optimization: Reduced APK size by supporting ARM architectures only
- Supports: arm64-v8a, armeabi-v7a
- Excludes: x86, x86_64
- Clear error message for unsupported architectures
- API Enhancements: Extended
getThumbnailmethod- Added
useCacheparameter (default: true) - Added
onProgresscallback parameter (optional) - Backward compatible with v0.1.1
- Added
📦 New Dependencies #
path_provider: ^2.1.0- For cache directory accesscrypto: ^3.0.3- For cache key generationuuid: ^4.0.0- For progress request tracking
📚 Documentation #
- Updated README with caching and progress examples
- Added comprehensive API documentation
- Added architecture support information
✅ Benefits #
- ✅ Faster thumbnail loading with caching
- ✅ Better user experience with progress feedback
- ✅ Smaller APK size (ARM-only builds)
- ✅ Backward compatible with v0.1.1
0.1.1 - 2026-02-13 #
🎉 Changed #
- Simplified Installation: Switched from GitHub Packages to JitPack for native library distribution
- No Credentials Required: Users no longer need GitHub Personal Access Tokens
- Easier Setup: Removed the need for
~/.gradle/gradle.propertiesconfiguration
📦 Technical Changes #
- Updated native library dependency from
com.smartmedia:smart-ffmpeg-androidtocom.github.Daronec:smart-ffmpeg-android - Changed repository from GitHub Packages to JitPack (
https://jitpack.io) - Native library now automatically downloads on first build
🔄 Migration Guide #
If you're upgrading from v0.1.0:
- Remove GitHub credentials from
~/.gradle/gradle.properties(no longer needed) - Clean build cache:
flutter clean cd example && flutter clean - Update dependency:
dependencies: smart_video_thumbnail: ^0.1.1 - Rebuild:
flutter pub get flutter build apk
The plugin will now automatically download the native library from JitPack on first build.
✅ Benefits #
- ✅ No GitHub account or token required
- ✅ Simpler installation process
- ✅ Works out of the box after
flutter pub get - ✅ Standard Android library distribution method
0.1.0 - 2026-02-13 #
🎉 Initial Release #
First public release of smart_video_thumbnail - a powerful Flutter plugin for video thumbnail generation.
✨ Features #
- Native FFmpeg Integration - Uses FFmpeg 4.4.2 for reliable video decoding
- Universal Format Support - Works with MP4, AVI, MKV, FLV, WMV, and all FFmpeg-compatible formats
- High Performance - Optimized frame extraction (50-300ms per thumbnail)
- Flexible API - Configurable dimensions, time position, and seek strategies
- RGBA8888 Output - Standard pixel format for easy integration with Flutter widgets
- Multiple Strategies - Normal, keyframe, and firstFrame extraction modes
- Robust Error Handling - Comprehensive error messages and logging
📱 Platform Support #
- ✅ Android - Full support for Android 8.0+ (API 26+)
- Architectures: arm64-v8a, armeabi-v7a
- Native FFmpeg library via smart-ffmpeg-android
- ⏳ iOS - Coming in future releases
📦 What's Included #
- Complete Flutter plugin with Dart API
- Native FFmpeg library integration (v4.4.2)
- Example app with grid layout demonstration
- Comprehensive documentation and usage examples
- GitHub Packages integration for native dependencies
🔧 Technical Details #
- FFmpeg Version: 4.4.2
- Supported Codecs: H.264, H.265, MPEG-4, VP8, VP9, and more
- Output Format: RGBA8888 (4 bytes per pixel)
- Library Size: ~8MB (native libraries)
- Min SDK: Android 26 (Android 8.0)
📚 Documentation #
- Full API reference in README.md
- Usage examples and code snippets
- Architecture documentation
- Performance benchmarks
- Debugging guide
⚠️ Known Limitations #
- Android only (iOS support planned)
- Synchronous API (may block UI thread for large videos)
- Requires GitHub token for native library access during build