Vid Player is a modern, minimalist video-only media player for Linux, built with Flutter. It combines a sleek, professional UI with powerful features inspired by industry leaders like MX Player.
- Minimalist & Modern UI: Built with
FlexColorSchemefor a professional, clean look with multiple theme presets. - Gesture Controls:
- Vertical Slide (Left): Adjust screen brightness.
- Vertical Slide (Right): Adjust volume.
- Visual Indicators: Real-time feedback for gesture adjustments.
- Advanced Media Support:
- Audio Track Switching: Easily switch between embedded audio languages.
- Subtitle Management: Support for internal and external subtitle files.
- External Tracks: Add custom audio or subtitle files during playback.
- Functional Equalizer: 5-band equalizer utilizing
ffmpegaudio filters for real-time sound adjustment. - Keyboard Shortcuts:
- Space: Toggle Play/Pause.
- Left Arrow: Seek backward 5 seconds.
- Right Arrow: Seek forward 5 seconds.
- Up Arrow: Increase volume.
- Down Arrow: Decrease volume.
- Intelligent Library:
- Video Only: Filtered to show only video files, keeping your library focused.
- Background Enrichment: Automatically probes video metadata and generates thumbnails.
- Linux Optimized: Uses
ffmpegfor high-performance thumbnail generation on Linux.
- Customization: Full settings screen to toggle UI features and switch themes.
The project follows a Clean, Scalable Architecture designed for maintainability:
- State Management: Powered by Riverpod (Notifiers) for a robust, reactive data flow.
- Logic & UI Separation:
lib/providers/: Business logic and state management (Media, Player, Theme).lib/services/: Core infrastructure (File scanning, Settings persistence, Thumbnail caching).lib/widgets/: Reusable UI components.lib/screens/: Feature-specific screens.
- Reactive UI: Uses Flutter Hooks within
HookConsumerWidgetto manage local widget state (like animations and timers) efficiently. - Navigation: Managed by GoRouter for declarative routing.
| Package | Purpose |
|---|---|
media_kit |
Core cross-platform media playback engine. |
flutter_riverpod |
Scalable state management. |
flutter_hooks |
Simplified widget lifecycle and state management. |
go_router |
Declarative routing and navigation. |
flex_color_scheme |
Advanced theme generation and color management. |
google_fonts |
Beautiful, high-quality typography. |
shared_preferences |
Local persistence for user settings. |
window_manager |
Desktop window customization (size, positioning). |
logger |
Professional logging for debugging. |
path_provider |
Cross-platform directory access. |
- Thumbnail Generation: Since standard Flutter packages often lack Linux support for video thumbnails, we implemented a custom bridge to
ffmpeg. This ensures fast, reliable thumbnail generation directly from the video source. - Metadata Probing: The app asynchronously probes videos for duration and metadata using
media_kit, updating the UI in real-time as information becomes available. - Equalizer Logic: The equalizer translates UI slider values into standard
mpvaudio filter strings, applying them directly to the playback engine.
This version is optimized and tested for Linux Desktop.
Created with ❤️ using Flutter and Media Kit.