Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Vid Player

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.

🚀 Key Features

  • Minimalist & Modern UI: Built with FlexColorScheme for 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 ffmpeg audio 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 ffmpeg for high-performance thumbnail generation on Linux.
  • Customization: Full settings screen to toggle UI features and switch themes.

🏗️ Architecture & Code Structure

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 HookConsumerWidget to manage local widget state (like animations and timers) efficiently.
  • Navigation: Managed by GoRouter for declarative routing.

📦 Key Packages Used

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.

🛠️ Implementation Details

  • 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 mpv audio filter strings, applying them directly to the playback engine.

🖥️ Platform Support

This version is optimized and tested for Linux Desktop.


Created with ❤️ using Flutter and Media Kit.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages