Skip to content

Repository files navigation

L-MPV Banner

🎬 L-MPV — Modern & Portable Media Player

Высокопроизводительный, эстетичный и 100% портативный медиаплеер нового поколения.
Построена на базе Tauri v2, React 19 и нативного движка libmpv (C-FFI).

Tauri v2React 19TypeScriptRustlibmpvWindows


🌟 Описание проекта

L-MPV сочетает в себе всю мощь нативного аппаратно-ускоренного видео-рендеринга MPV (gpu-hq, d3d11, HDR, ewa_lanczossharp) и современный элегантный интерфейс в стиле Glassmorphism, созданный на React 19 и TypeScript.

Приложение разработано по концепции Zero-Install Portable Architecture: плеер абсолютно отвязан от системного реестра и внешних папок Windows. Все конфигурации, скриншоты и нативные бинарные библиотеки хранятся локально в одной папке.


✨ Ключевые Особенности

  • Аппаратный Рендеринг и GPU-HQ:

    • Высококачественная профилизация profile=gpu-hq с обработкой цветности ewa_lanczossharp и mitchell.
    • Поддержка D3D11, hwdec=auto-safe, авто-распознавание HDR (target-colorspace-hint, tone-mapping).
    • Прямой вывод видеопотока на HWND окна Webview2 через C-FFI с нулевой задержкой.
  • 🎨 Современный Glassmorphic UX/UI:

    • Минималистичная плавающая панель управления («таблетка») с адаптивными акцентными цветами (Amber, Pink и др.).
    • Умная система бездействия (IDLE): интерфейс плавно скрывается при просмотре и не гаснет, если курсор находится над органами управления или открыты модальные окна.
    • Кастомное ПКМ контекстное меню для быстрой настройки видео, звука, масштаба и дорожек.
  • 📦 100% Портативная Архитектура:

    • Полная автономность без установки в систему.
    • Автоматическое определение локальных путей во время исполнения (current_exe().parent()).
    • Сохранение настроек в config/settings.json и чистых кадров в screenshots/.
  • 🔍 Аппаратный Zoom & Pan (Масштабирование):

    • Центрированный плавающий зум кадра по комбинации Ctrl + Колесо мыши (с частотой до 60 FPS).
    • Магнитная привязка к исходному размеру (100%) и мгновенный сброс по Ctrl + 0.
  • 🎞️ Покадровая Точность & Главы (Chapters):

    • Точный шаг назад/вперед на 1 кадр по клавишам / (или , / .) с информативным OSD-уведомлением.
    • Полная навигация по главам файла с интерактивным превью времени.
  • 🎶 Управление Плейлистом:

    • Автоматическое фоновое сканирование папки открытого файла и создание единого плейлиста.
    • Выдвижная боковая панель Playlist Drawer (L / P) с мгновенным поиском и фильтрацией.
    • Перетаскивание видео и аудио файлов прямым Drag & Drop.
  • 📸 Чистые Скриншоты:

    • Мгновенное сохранение исходного кадра в высоком качестве (PNG) без OSD по нажатию S.
  • ⚙️ Кастомизация Горячих Клавиш и Ассоциаций:

    • Модальное окно настроек SettingsModal с возможностью перепривязки любой горячей клавиши и сбросом по умолчанию.
    • Быстрая регистрация и удаление ассоциаций видео/аудио файлов в Windows в один клик.

🏗️ Стек Технологий

КомпонентИспользуемые Технологии
FrontendReact 19, TypeScript 5.8, Vite 7, Lucide Icons, Vanilla CSS (Design Tokens, Glassmorphism)
Backend & ShellRust (2021 edition), Tauri v2 framework
Media Enginelibmpv-2.dll / mpv-2.dll via FFI (libloading crate)
Ось & ПлатформаWindows 10 / 11 x64 (Direct3D 11, HWDEC auto-safe)

📂 Структура Проекта

L-MPV/
├── L-MPV - Banner U.png # Главный баннер проекта
├── src/ # Фронтенд (React 19 + TypeScript)
│ ├── components/ # UI Компоненты
│ │ ├── Titlebar.tsx # Кастомная шапка окна
│ │ ├── PlayerControls.tsx # Плавающая панель управления
│ │ ├── ContextMenu.tsx # Кастомное контекстное ПКМ-меню
│ │ ├── SettingsModal.tsx # Настройки (скриншоты, цвета, хоткеи, ассоциации)
│ │ ├── MediaInfoModal.tsx # Техническая информация о видео
│ │ ├── ChaptersModal.tsx # Навигация по главам
│ │ └── PlaylistDrawer.tsx # Боковая панель плейлиста
│ ├── contexts/ # React-контекст (PlayerStateContext)
│ ├── utils/ # Цветовые палитры и хоткеи
│ ├── App.tsx # Главный контейнер приложения
│ └── index.css # Design System & Glassmorphism стили
├── src-tauri/ # Бэкенд (Rust + Tauri v2)
│ ├── src/
│ │ ├── main.rs # Точка входа Rust
│ │ ├── lib.rs # Привязка HWND и 38 IPC-команд
│ │ ├── mpv_manager.rs # FFI-оберчик libmpv (GPU-HQ, D3D11, HDR)
│ │ └── commands.rs # 38 #[tauri::command] обработчиков
│ ├── Cargo.toml # Зависимости Rust
│ └── tauri.conf.json # Конфигурация Tauri v2
└── Portable-L-MPV/ # Готовая портативная сборка
├── L-MPV.exe # Исполняемый файл плеера
├── mpv-2.dll # Нативная библиотека MPV
├── config/ # Локальные настройки (settings.json)
└── screenshots/ # Директория сохранения снимков

⌨️ Горячие Клавиши (Default Hotkeys)

ФункцияКлавиши по умолчанию
Воспроизведение / ПаузаSpace или Клик ЛКМ по видео
Покадровый шаг назад / вперед / , / Б и / . / Ю
Перемотка ±10 секундКнопки на панели / Таймлайн
Громкость ±5%Колесо мыши над видео / Слайдер
Масштабирование (Zoom & Pan)Ctrl + Колесо мыши
Сброс масштаба к 100%Ctrl + 0
Полноэкранный режимF или Двойной клик ЛКМ
Открыть файлCtrl + O
Панель плейлистаL или P
Сделать скриншотS или Ы
Окно настроекИконка шестеренки / ПКМ-меню

(Все клавиши можно легко перепривязать в окне Настроек).


🚀 Сборка и Запуск

Требования к окружению

  • Node.js v18+ и npm
  • Rust (toolchain x86_64-pc-windows-msvc)
  • Нативная библиотека libmpv-2.dll в директории приложения

Режим разработки (Dev)

# Установка зависимостей
npm install
# Запуск Vite + Tauri в режиме live-reload
npm run tauri dev

Сборка Портативного Релиза (Production Build)

# Компиляция исполняемого файла
npm run tauri build

Готовый бинарный файл создается по пути src-tauri/target/release/l-mpv.exe. Для формирования портативного дистрибутива скопируйте файл в папку Portable-L-MPV/L-MPV.exe.


⚡ IPC-Архитектура (Rust ↔ React)

Бэкенд L-MPV предоставляет 38 высокой степени оптимизации IPC-команд, включая:

  • Управление воспроизведением (open_file, toggle_pause, seek, frame_step, playlist_next).
  • Дорожки и Субтитры (get_tracks, set_audio_track, set_subtitle_track, load_subtitle_file).
  • Аппаратное масштабирование (set_video_zoom_and_pan, get_video_zoom).
  • Системные интеграции Windows (register_file_associations, unregister_file_associations).

📄 Лицензия

Проект распространяется под лицензией MIT.


Сделано с любовью к качественному видео и чистому коду 🚀

About

L-MPV — Fast, modern, and lightweight portable video player GUI powered by MPV, Tauri, Rust, and React.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages