Skip to content

Repository files navigation

L-MPV Banner

L-MPV — Modern & Portable Media Player

Высокопроизводительный, эстетичный и портативный медиаплеер нового поколения.
Построен на базе Tauri v2, React 19, Direct3D 11 и нативного движка libmpv (C-FFI) с поддержкой Real-Time 4K AI Upscaling.

Version 2.5.3 Downloads Telegram Channel Windows Tauri v2 React 19 TypeScript Rust libmpv AI Upscale GPLv3 License


🌟 О проекте

L-MPV — это современный настольный медиаплеер для Windows, объединяющий эталонное качество воспроизведения нативного видеодвижка MPV (vo=gpu-next, Direct3D 11, HDR, WASAPI, студийный 32-tap sinc-ресемплинг), аппаратный Real-Time 4K AI Апскейлинг ( ONNX инференс через DirectML и TensorRT) с утонченным, отзывчивым интерфейсом в стиле Glassmorphism, созданным на React 19 и TypeScript.

Плеер спроектирован по строгой концепции True Portable Architecture (Zero-Install): он полностью автономен и не создает мусор в системных каталогах пользователя. Все конфигурации, кэш, скриншоты, универсальная папка ONNX-моделей (models/onnx/) и нативные бинарные библиотеки (libmpv-2.dll, ffmpeg.exe, mediainfo.dll) расположены непосредственно в каталоге приложения.

L-MPV Player Interface


💖 Благодарности

Создание и развитие медиаплеера L-MPV стало возможным благодаря невероятным опенсорс-проектам и талантливым людям:

  • LANKETT — огромная благодарность дизайнеру за разработку фирменной иконки и визуального логотипа!
  • mpv (GitHub) — за эталонный, мощный и гибкий нативный видеодвижок, обеспечивающий бескомпромиссное качество воспроизведения.
  • mpv-AnimeJaNai & the-database — за революционный видеофильтр vf_animejanai и возможность воспроизведения нейросетевого 4K-апскейлинга в реальном времени.
  • Tauri (GitHub) — за легковесный, безопасный и сверхбыстрый кроссплатформенный фреймворк нового поколения на базе Rust и веб-технологий.
  • dnd-kit (GitHub) — за современный, гибкий и высокопроизводительный набор Drag & Drop примитивов для React, обеспечивающий интуитивное интерактивное перетаскивание.

📸 Скриншоты Интерфейса

🌌 Аппаратная Подсветка Полос
Шейдерное размытие краев видео (Ambient)

Ambient Light
📑 Выдвижная Панель Плейлиста
Автоматическое сканирование каталога, фильтрация и живой поиск

Playlist Drawer
🎧 Управление Дорожками и Экспорт в 1 Клик
Быстрая смена аудио/субтитров и скачивание

Audio & Subtitles
🔖 Интерактивная Навигация по Главам
Список глав с таймкодами и подсветкой активной части видео

Chapters Modal
⚙️ Центр Настроек и Апскейлинг
Управление AI-апскейлингом, скриншотами и системными ассоциациями

General Settings
🎨 Кастомизация
Акцентные цвета, 10 палитр аудио-визуализатора

Customization & Hotkeys

✨ Ключевые Возможности

🚀 Real-Time 4K AI Upscaling (Нейросетевой Апскейлинг Аниме и Видео)
  • Нативный инференс в видеопотоке: интеграция фильтра vf_animejanai на базе the-database/mpv-AnimeJaNai и моста aji.dll с аппаратным выводом кадров в 4K Ultra HD в реальном времени.
  • Два режима работы: переключатель «Выкл» и «AI Upscaling» в Настройках (F2) — пользователь сам решает, когда задействовать искусственный интеллект.
  • Два движка инференса (Backend):
    • DirectML: универсальный инференс через DirectX 12 для любых видеокарт (AMD Radeon, Intel Arc/Iris, NVIDIA GeForce) с максимальной стабильностью.
    • TensorRT: максимальная скорость и частота кадров для видеокарт NVIDIA GeForce RTX (поддержка архитектур от sm75 до новейшей Blackwell sm120).
  • Умный автозагрузчик компонентов («Скачать движок»):
    • Автоматическое определение установленного GPU и скачивание точного набора библиотек.
    • Потоковая индикация процентов, объема (МБ), аккуратный статус распаковки и фиксация 100% готовности в течение 3 секунд.
    • Неблокирующая фоновая распаковка через spawn_blocking без зависаний UI и без всплывающих консольных окон.
  • Предварительная компиляция TensorRT 1080p (.engine):
    • Фоновая оптимизация ONNX моделей под разрешение 1080p -> 4K с многоступенчатым отслеживанием фаз (разбор ONNX, тактики CUDA, оптимизация графа, сериализация).
    • Компиляция через нативный aji_harness.exe с точным соответствием динамических осей dyn-HW и оптимизационных параметров.
    • Устранение задержек при первом включении видео и поддержка перекомпиляции в один клик.
  • Автоматическая FP16-нормализация и поддержка моделей всех поколений (V1, V2, V3):
    • Встроенный алгоритм аппаратной валидации и автоконвертации типов ONNX: модели в формате FP32 автоматически приводятся к стандарту IEEE Float16 перед компиляцией.
    • Полное устранение артефактов «радужного шума» и расхождения памяти шейдера: идеальная четкость и чистота картинки как на компактных сетях V2, так и на тяжелых моделях V1 и HD V3 / V3Sharp1.
  • Универсальная библиотека ONNX (models/onnx/):
    • Возможность использования любых сторонних моделей формата .onnx.
    • Кнопка «Папка моделей» для быстрого перехода в Проводник Windows.
    • Переключатель скрытия/отображения названий моделей (маскировка точками).
    • Интерактивное перемещение порядка моделей мышкой (@dnd-kit/sortable) за ручку захвата с сохранением в config/models_order.json.
    • Унифицированные компактные элементы управления в карточке модели единой высоты (24px) и парящие тени на фоне карточек.
    • Персональное назначение горячих клавиш и кнопок мыши в едином стиле вкладки хоткеев с отменой по Esc и клику вне.
  • Переключение нейросетей на лету по горячим клавишам:
    • Ctrl+J — Информационный OSD-оверлей статуса и статистики апскейлинга (активный движок, выбранная модель, слот, разрешение видео -> 4K);
    • Shift+1 — Выключить апскейлинг;
    • Shift+2 — Включить Нейросеть #1;
    • Shift+3 — Включить Нейросеть #2;
    • Shift+4 — Включить Нейросеть #3;
    • Мгновенное OSD-уведомление с отображением реального названия активированной модели.
    • Принудительная перерисовка кадра на паузе при смене модели.
⚡ Рендеринг Нового Поколения (vo=gpu-next)
  • GPU-HQ пайплайн: профиль profile=gpu-hq, нативный Direct3D 11 (gpu-api=d3d11) и аппаратное декодирование hwdec=auto-safe.
  • Прецизионное масштабирование: алгоритмы интерполяции scale=spline36 и cscale=spline36 для идеальной четкости деталей и цветовых переходов.
  • Интеллектуальный HDR: автоматическая передача метаданных в дисплей (target-colorspace-hint=yes), динамический расчет пиков яркости (hdr-compute-peak=yes) и адаптивный tone mapping.
  • Zero-Flicker жизненный цикл: окно создается в скрытом режиме, рассчитывает истинный Display Aspect Ratio видео, центрируется и отображается (window.show()) строго тогда, когда интерфейс и первый видеокадр готовы к показу, исключая любые рывки геометрии и мерцания.
  • Прямой вывод в окно: видеопоток отрисовывается в нативный Win32 HWND через C-FFI с нулевой задержкой под полностью прозрачным DOM-слоем WebView2 (transparent: true).
🎵 Нативный Аудио-Визуалайзер (WASAPI Loopback Capture / FFT 1024)
  • Студийный спектральный анализ: нативный захват системного звука через Windows WASAPI Loopback Capture в фоновом Rust-потоке с вычислением 1024-точечного БПФ (Cooley-Tukey Radix-2 FFT) со сглаживающим окном Ханна.
  • 32 студийные частотные полосы: детальное частотное разрешение 46.8 Гц на бин. Логарифмическое распределение от 25 Гц до 19 000 Гц со строгой монотонностью полос (суб-бас, панч, вокал, презенс, кристальный верх).
  • Сведение 5.1 / 7.1 Surround для кино: интеллектуальное подмешивание низкочастотного канала сабвуфера (LFE) и центрального канала голоса — любые взрывы, стрельба и спецэффекты вызывают мощную динамическую реакцию!
  • Логарифмическая шкала в децибелах (dBFS): динамический диапазон от -46 dB до 0 dB с частотной компенсацией спада розового шума (+0.75 dB/полоса) и отвязкой от уровня громкости плеера.
  • 9 стилей визуализации: такие как Waveform (многослойная волна с динамическими спектральными гармониками), Spectrum (32-полосный эквалайзер) и Bars (ритм-капсулы Apple Music / Spotify style) и так далее.
  • Студийная баллистика и физика пиков (Peak Hold & Drop): мгновенная атака за 1 кадр и плавное опадание светящихся пиковых маркеров с ускорением свободного падения.
  • Нулевая нагрузка на процессор (0.0% CPU): при паузе, сворачивании, отключении или в IDLE-режиме (когда элементы управления скрываются) поток захвата уходит в глубокий сон без обращения к WASAPI.
🌌 Аппаратная Подсветка Полос (Ambient Light / GPU Blur)
  • Устранение черных полос: при несовпадении пропорций видео и монитора (21:9 на 16:9, 4:3, нестандартные форматы) края видеокадра аппаратно проецируются и размываются в областях letterbox и pillarbox на базе шейдеров libplacebo без нагрузки на процессор.
  • 3 режима работы:
    • Off — классические черные полосы;
    • Blur — аппаратное шейдерное размытие кадра в реальном времени с плавной регулировкой радиуса (от 10 до 150 px);
    • Color — мягкая заливка акцентным цветом плеера (включая системный цвет Windows Accent) или кастомным оттенком HEX.
  • Производительность 60 FPS: мгновенный GPU-предпросмотр (apply_ambient_preview) без блокирующего дискового ввода-вывода с дебаунсом сохранения на диск (400 мс).
  • Быстрое управление: переключение по горячей клавише B, в контекстном меню (ПКМ) и в Настройках.
🎧 Студийный Аудиофильский Звук и Усиление до 150% (Audiophile Profile)
  • Низколатентный вывод: нативный драйвер Windows WASAPI (ao=wasapi) с оптимизированным буфером 0.2 с.
  • Софтверный буст громкости (до 150%): возможность усиления тихих аудиодорожек до 150% без искажений и клиппинга (volume-max=150.0).
  • Студийный 32-точечный sinc-ресемплинг: фильтр audio-resample-filter-size=32, 16 384 фазы сдвига (audio-resample-phase-shift=14) и линейная интерполяция между отсчетами (audio-resample-linear=yes).
  • Нормализованный даунмикс: автоматическое безопасное сведение многоканального аудио 5.1/7.1 в стерео (audio-normalize-downmix=yes) с аппаратной защитой от перегрузок и клиппинга.
  • Коррекция тона: сохранение естественной высоты тона звука при изменении скорости (audio-pitch-correction=yes, scaletempo2).
📥 Мгновенное Извлечение и Экспорт Дорожек (Track Extraction)
  • Экспорт звука и субтитров в 1 клик: встроенные кнопки скачивания в меню аудиодорожек и субтитров на нижней панели и в контекстном меню (ПКМ).
  • Direct Stream Copy (-c copy): мгновенное извлечение без перекодирования и без малейшей потери исходного качества за считанные секунды.
  • Умный многопоточный фоллбек (-threads 0): автоматическая конвертация несовместимых кодеков (например, субтитры mov_text автоматически конвертируются в формат .srt).
  • Прямое копирование внешних файлов: мгновенное копирование уже подключенных внешних субтитров без обращения к FFmpeg.
  • Гибкие пути сохранения: возможность автоматического сохранения рядом с видеофайлом либо через системный проводник.
  • Анимированная индикация: спиннер в меню и статусная строка прогресса на панели управления.
💬 Интерактивный Поиск и Окно Субтитров (Searchable Subtitles Browser)
  • Мгновенный полнотекстовый поиск: живой поиск по всей дорожке субтитров с моментальной подсветкой совпадений, счетчиком найденных реплик и быстрой навигацией клавишами Вверх / Вниз / Enter.
  • Интерактивная навигация и переход: клик по любой строке диалога мгновенно перематывает воспроизведение на точный таймкод фразы.
  • Режим «Следить за речью» (Follow Playback): автоматическое отслеживание произносимой реплики во время воспроизведения в реальном времени с адаптивным плавным автоскроллом (rAF-цикл).
  • Два режима отображения:
    • Обычный (Текст): чистый отформатированный текст диалогов без мусора разметки, таймкод начала, длительность и имя персонажа/актёра.
    • Технический (ASS-инспектор): профессиональный разбор разметки ASS ([Ht] HTML-превью, [Ae] Raw ASS), подробные бейджи стилей (название стиля, актёр, шрифт, размер, цвет HEX/BGR, слой MarginV/Layer, координаты и теги эффектов).
  • Тонкая регулировка задержки (Sub Delay): точная подстройка смещения тайминга субтитров с шагом 50/100 мс прямо из строки поиска.
  • Быстрый селектор дорожек (Track Picker): переключение между встроенными и внешними дорожками, подключение новых файлов .srt/.ass и отключение субтитров в 1 клик.
  • Свободная геометрия и позиционирование: изменение ширины окна перетаскиванием границ (Resize), горизонтальное перемещение окна (Drag & Drop за шапку), автоподстройка ширины под режим и сохранение геометрии.
  • Настройка непрозрачности (Glass / Solid): выбор между полупрозрачным Glassmorphism стилем и контрастным плотным фоном для комфортного чтения поверх ярких сцен.
  • Высокопроизводительная DOM-виртуализация: моментальная плавная прокрутка тысяч строк субтитров без лагов и с минимальной нагрузкой на процессор.
🎨 Премиальный Glassmorphic UX/UI, Дизайн-Система и Шрифты
  • 11 Кинематографичных тем оформления плеера: Тёмный графит, Discord Gray, Глубокий OLED, Сапфировая полночь, Холодный Норд, Лавандовый индиго, Тёмный изумруд, Лесной шалфей, Мятный нефрит, Аметист, Коралловый закат с выкатными интерактивными pill-метками и динамической гармонизацией фона, текста, поверхностей и акцентов.
  • Единая Дизайн-Система Поверхностей (Elevation Surfaces):
    • Level 1 (.glass-panel): главные парящие панели, выпадающие меню и модальные окна (blur(28px)).
    • Level 2 (.glass-section): группирующие секции и функциональные блоки настроек.
    • Level 3 (.glass-tile): интерактивные карточки опций и нейросетей с физическим откликом и неоновой окантовкой активного состояния (.glass-tile--active).
  • Шрифтовая экосистема из 6 гарнитур (UI Font):
    • Inter: эталон нейтральности и четкости.
    • Системный: нативный шрифт операционной системы (Segoe UI / San Francisco / Roboto).
    • Outfit: футуристичный технологичный геометрический стиль.
    • Plus Jakarta Sans: плавный европейский нео-гротеск.
    • Manrope: современный полугеометрический гротеск.
    • JetBrains Mono: моноширинный шрифт для точных данных.
    • Мгновенное переключение во вкладке «Кастом» с сохранением в localStorage и синхронизацией между окнами.
  • Интерактивная секция «Цветовое оформление»: живой аутентичный предпросмотр сочетания расцветки плеера, контрастности текста и подсветки элементов в реальном времени.
  • Адаптивный неоновый глоу (Glow Intensity): 4 уровня свечения (Off, Soft, Medium, Cyber Intense) с вектором рассеивания drop-shadow и подсветкой таймлайна.
  • Кастомный Color Picker и палитра 4×4: модальное окно выбора цвета с кругом спектра HSV/RGB/HEX, слайдером яркости, 16 пастельными и 16 стандартными пресетами, а также персистентной сохранённой палитрой (до 15 своих цветов).
  • Многопозиционная система времени (6 вариантов расположения):
    • Возможность выбора идеального положения времени в Настройках (F2) или в ПКМ-меню:
      • Слева от таймлайна — классическое положение перед полосой.
      • Справа от таймлайна — стандартное расположение.
      • Справа от громкости — в левой группе кнопок тулбара рядом с аудио-визуализатором.
      • Справа в тулбаре кнопок — в правом блоке кнопок перед сервисными иконками (таймлайн на 100% ширины).
      • По центру над таймлайном — парящая неоновая капсула со стеклянным размытием backdrop-filter: blur(12px), центрированная над полосой перемотки (таймлайн на 100% ширины).
      • В заголовке окна (Titlebar) — интерактивный бейдж времени в верхней шапке окна слева от кнопок окна; полностью освобождает нижнюю панель управления.
    • При выборе любой позиции вне таймлайна полоса перемотки автоматически раскрывается на 100% ширины панели (.timeline-row--full).
  • 4 интерактивных формата времени и переключение в 1 клик:
    • Поддержка форматов: Прошедшее / Общее, Только оставшееся, Расчет времени окончания видео (с учетом скорости speed) и Высокоточный тайминг с миллисекундами.
    • Интерактивная смена формата по клику непосредственно на время в любой точке интерфейса с OSD-уведомлением.
  • Стили панели управления («Парящий остров» и «Пристыкованная плашка»):
    • Выбор между воздушной капсулой с отступами от краев окна и монолитной пристыкованной полосой во всю ширину окна.
    • Детализированные интерактивные мини-превью плеера 148×64px в Настройках с неоновой подсветкой активного выбора.
  • Эргономичный редизайн вкладки «Внешний вид»:
    • Верхний горизонтальный слайдер прозрачности интерфейса (от 20% до 100%).
    • Симметричная трёхколоночная сетка: Скругление углов (карточки 2x2 + вертикальный ползунок) | Масштабирование UI Scale (карточки 2x2 + вертикальный ползунок + кнопка «A» авто-масштаба) | Шрифты (список 6 гарнитур с превью «Aa»).
    • Нижний блок: стиль панели управления с мини-превью (слева) + компактные сетки выбора позиций времени (3x2) и формата времени (2x2) (справа).
  • Динамическая система скругления углов (UI Corner Radius): 4 уровня скругления (Без скругления 0px, Умеренное 8px, Закругленное 14px, Овальное 20px/Pill) с моментальным применением ко всем окнам, кнопкам и плашкам интерфейса.
  • Плавающая панель управления: минималистичная нижняя «таблетка» с акцентной подсветкой, быстрым доступом к аудио, субтитрам, главам, скриншотам, скорости и плейлисту.
  • Мягкое контурное свечение (Vector Drop-Shadow): филигранное рассеивание света строго по контуру векторных SVG-иконок с плавным градиентным угасанием без грубых круговых ареолов.
  • Многоуровневая адаптивность (Container Queries): многоступенчатое умное сжатие и скрытие подписей дорожек, компактное масштабирование аудио-визуализатора и второстепенных кнопок при сужении окна.
  • Умное автоскрытие в Fullscreen: возможность мгновенного скрытия всего интерфейса при подведении курсора к верхнему краю экрана.
🔍 Аппаратный Zoom & Pan и Колесо Мыши
  • Плавное масштабирование кадра: центрированный зум относительно курсора по комбинации Ctrl + Колесо мыши с частотой до 60 FPS.
  • Магнитная привязка: автоматическое прилипание к исходному масштабу (100%) при приближении к нулевому зуму.
  • Мгновенный сброс: возврат к 100% масштабу и центрированию по клавише Ctrl + 0.
  • Регулировка громкости: прокрутка колеса мыши над видео без клавиши Ctrl плавно меняет громкость (до 150%) с шагом 5% и сохранением уровня.
🖥️ Smart Fullscreen, PiP и Оконный Режим
  • Настоящий полноэкранный режим: гарантированное скрытие панели задач Windows через Win32 флаг HWND_TOPMOST и DWM Cloaking без смещения кадра в угол (0, 0).
  • Динамический Z-порядок (handle_window_focus): при переключении на другое приложение (Alt+Tab) плеер автоматически снимает статус Topmost, позволяя окнам свободно открываться поверх плеера, и мгновенно восстанавливает его при возврате фокуса.
  • Режим PiP (Поверх всех окон): фиксация компактного окна плеера поверх остальных окон клавишей T или кнопкой-булавкой.
  • Чистый жизненный цикл процесса: гарантированное моментальное закрытие фонового процесса L-MPV.exe в диспетчере задач Windows при выходе из приложения.
  • Пропорции и поворот: изменение соотношения сторон (Оригинальное, 16:9, 21:9 CinemaScope, 4:3) и поворот видеокадра на 0°, 90°, 180°, 270°.
📋 Буфер Обмена и Чистые Скриншоты
  • Кадр в буфер обмена по Ctrl + C: мгновенный захват текущего кадра без OSD напрямую в буфер обмена Windows через нативную команду copy_frame_to_clipboard (без сохранения временных файлов).
  • Чистый скриншот: сохранение кадра в высоком качестве (PNG) по клавише S или иконке камеры с уведомлением в OSD.
  • Пользовательская папка: выбор папки сохранения в настройках или сброс на локальную папку screenshots/.
📑 Умный Плейлист и Навигация
  • Автоматический плейлист с Natural Sort: при открытии файла плеер находит все видео в директории и выстраивает плейлист в естественном порядке нумерации файлов.
  • Выдвижная панель Playlist Drawer (L / P): мгновенный поиск, фильтрация, подсветка активного трека и переключение в один клик.
  • Drag & Drop: поддержка перетаскивания файлов и сетевых URL напрямую в окно плеера.
  • Режимы повтора и Shuffle: циклическое воспроизведение текущего файла, всего плейлиста или случайный порядок.
  • Главы (Chapters): модальное окно навигации по встроенным главам файла с интерактивными таймкодами.
  • Возобновление просмотра (Resume Playback): сохранение последней позиции для каждого просмотренного файла.
  • Интеграция с Windows Taskbar: отображение индикатора прогресса воспроизведения прямо на иконке плеера в панели задач Windows.
⚙️ Гибридная Система Кастомизации Управления
  • Полная перепривязка хоткеев: поддержка комбинаций клавиш с модификаторами (Ctrl, Shift, Alt) и кликов мыши (MouseLeft, MouseRight, MouseMiddle, MouseLeftDoubleClick).
  • Раздельные действия: индивидуальные бинды для смены аудио/субтитров кликом и открытия их меню.
  • Точечный сброс: персональная кнопка сброса «По умолчанию» рядом с каждым действием.
  • Ассоциации файлов: регистрация медиафайлов в реестре Windows и быстрый переход в параметры Windows «Приложения по умолчанию».
📊 Анализ Свойств Медиаконтейнера (MediaInfo.dll C-API)
  • Нативный анализ без внешних консолей: прямое C-FFI связывание с mediainfo.dll через libloading для мгновенного сбора исчерпывающей информации обо всех видео, аудио и субтитрах.
  • Полноценное независимое окно ОС Windows (565×685 px): окно MediaInfo можно свободно перемещать за пределы плеера на любой монитор; открывается поверх плеера с возможностью открепления кнопкой-булавкой (Pin / alwaysOnTop).
  • Автономный режим просмотра ("Открыть в L-MPV MediaInfo"): быстрый просмотр технической информации о файле напрямую из контекстного меню Проводника Windows без запуска основного плеера.
  • Интерактивный функционал: поддержка Drag & Drop новых файлов в окно, мгновенный поиск по свойствам (Ctrl+F), экспорт в .txt, копирование в буфер обмена и переключение языков (RU/EN).
📁 Модульная Система Пресетов Настроек и Файлов
  • Индивидуальные файлы пресетов (config/presets/<название>.json): каждый созданный пресет сохраняется в собственный независимый JSON-файл в портативной папке, исключая смешивание настроек. Пресетами легко делиться, копировать и бэкапить через проводник.
  • Нативный экспорт и импорт: системные диалоги Проводника Windows (save / open) для сохранения файла пресета в любую удобную папку на компьютере или загрузки стороннего стиля.
  • Быстрый переход в проводник: кнопка «Папка» открывает каталог config/presets/ в Проводнике Windows в один клик.
  • Автоматическая синхронизация на лету: список пресетов мгновенно обновляется при возврате фокуса в окно плеера (например, после ручного изменения или добавления .json файлов) или по кнопке «Обновить».
🖱️ Настраиваемое Контекстное Меню (ПКМ) и Drag-and-Drop Конфигуратор
  • Интерактивный Drag-and-Drop редактор: визуальный конфигуратор в Настройках (F2 -> «Основные» -> «Контекстное меню (ПКМ)») на базе движка @dnd-kit с поддержкой перетаскивания как за ручку-хват (Grip), так и за всю карточку пункта.
  • 22 функциональных действия и подменю: управление дорожками аудио и субтитров, главами, скоростью, соотношением сторон, поворотом кадра, подсветкой полос, информацией MediaInfo, таймером сна и пресетами оформления.
  • Динамические интеллектуальные подменю:
    • «Пресеты настроек»: выбор сохраненных пресетов пользователя и готовых стилей с отметкой активного выбора.
    • «AI-Апскейлинг»: мгновенное включение/выключение и выбор модели нейросети из папки models/onnx/.
    • «Кнопки панели управления»: 10 индивидуальных переключателей видимости элементов нижней панели.
  • Вставка разделителей (divider): добавление горизонтальных черт в любое место меню для аккуратной группировки.
  • Портативное хранение (config/context_menu.json): все изменения раскладки сохраняются локально в папке плеера. Кнопка «Сброс» позволяет в один клик вернуть эталонный заводской вид.

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

Уровень Технологический стек Назначение
Frontend React 19, TypeScript 5.8, Vite 7, Lucide Icons, Vanilla CSS Сверхбыстрый Glassmorphic интерфейс, дизайн-система на CSS Custom Properties, микроанимации
DnD Engine @dnd-kit/core, @dnd-kit/sortable Интерактивное физическое перетаскивание пунктов меню с кастомными сенсорами без привязки к Pointer Events
Backend & Shell Rust (2021 edition), Tauri v2, Tokio Низкоуровневая интеграция с Win32 API, многопоточный IPC-мост, управление окнами и DWM
Media Engine libmpv-2.dll (сборка the-database/mpv-winbuild) via dynamic FFI (libloading) Аппаратный рендеринг vo=gpu-next, Direct3D 11, HDR tone-mapping, demuxing
AI Upscaling vf_animejanai + aji.dll (DirectML / TensorRT) + ONNX Аппаратный апскейлинг видео в реальном времени до 4K на любых GPU
MediaInfo Engine mediainfo.dll via dynamic C-FFI Извлечение исчерпывающего технического отчёта о видеоконтейнере и потоках данных
Audio Engine Windows WASAPI, 32-tap Sinc Resampler, Scaletempo2 Студийный 32-точечный ресемплинг, безопасный даунмикс 5.1/7.1 в стерео, pitch correction
Track Extraction Встроенный FFmpeg (ffmpeg.exe) Прямой экспорт потоков аудио/субтитров (-c copy) и интеллектуальный fallback-транскодинг
Платформа Windows 10 / 11 x64 Аппаратное ускорение DXVA2/D3D11VA, Windows Explorer Context Menu API, Taskbar API

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

L-MPV/
├── assets/                               # Статические изображения и баннеры
├── src/                                  # Фронтенд (React 19 + TypeScript)
│   ├── assets/                           # Иконки и ресурсы UI
│   ├── components/                       # Модульные компоненты интерфейса
│   │   ├── Titlebar.tsx                  # Шапка окна (логотип, по центру название файла, интерактивный бейдж времени, кнопки окна)
│   │   ├── PlayerControls.tsx            # Нижняя плавающая «таблетка» управления (смена дорожек, скачивание, скриншот, плейлист, скорость)
│   │   ├── TimeDisplay.tsx               # Интерактивный компонент отображения времени с переключением формата по клику
│   │   ├── ContextMenu.tsx               # Кастомное ПКМ-меню (дорожки, расположение/формат времени, скорость, вид, масштабирование, подсветка)
│   │   ├── SettingsModal.tsx             # Центр настроек (модульная архитектура вкладок с сохранением активной страницы)
│   │   ├── settings/                     # Модульные компоненты вкладок настроек:
│   │   │   ├── GeneralSettingsTab.tsx    # Основные (скриншоты, воспроизведение и окна, аудиодорожки и субтитры — в т.ч. названия дорожек на панели, меню ПКМ)
│   │   │   ├── ContextMenuSettingsTab.tsx # Визуальный Drag-and-Drop редактор контекстного меню (@dnd-kit)
│   │   │   ├── UpscalingSettingsSection.tsx # Управление 4K AI апскейлингом (DirectML / TensorRT, библиотека ONNX моделей, порядок моделей мышкой, хоткеи)
│   │   │   ├── AppearanceSettingsTab.tsx # Эргономичный дизайн: темы, прозрачность, скругление, масштаб, шрифты, стиль панели, 6 позиций времени, 4 формата
│   │   │   ├── VisualizerSettingsSection.tsx # Настройки аудио-визуалайзера (режимы, стили, баллистика)
│   │   │   ├── VisualizerPreviewCard.tsx # Интерактивная карточка предпросмотра аудио-визуализатора (Canvas + FFT-ритм)
│   │   │   ├── PresetsSection.tsx        # Секция управления пресетами («Мои пресеты» и «Готовые стили») с унифицированными кнопками
│   │   │   ├── HotkeysSettingsTab.tsx    # Управление горячими клавишами и биндами
│   │   │   └── IntegrationSettingsTab.tsx # Системная интеграция и ассоциации файлов в Windows
│   │   ├── upscale/                      # Модульные подкомпоненты апскейлинга:
│   │   │   ├── types.ts                  # Модели данных и событий прогресса
│   │   │   ├── GpuHardwareCard.tsx       # Информационная карточка обнаруженного GPU (VRAM, архитектура, рекомендации)
│   │   │   ├── BackendSelector.tsx       # Селектор DirectML / TensorRT, скачивание движков, удаление, индикация прогресса
│   │   │   ├── ModelListItem.tsx         # Карточка модели нейросети с Drag-and-Drop мышкой (@dnd-kit/sortable), высотой 24px и React.memo
│   │   │   ├── ModelTensorRtAction.tsx   # Статус 1080p готов, микро-прогрессбар компиляции, кнопки сборки/перекомпиляции 24px (React.memo)
│   │   │   └── ModelHotkeyButton.tsx     # Компактная кнопка назначения хоткея активации модели в едином стиле хоткеев (React.memo)
│   │   ├── MediaInfoModal.tsx            # Компактное окно технической информации о медиафайле
│   │   ├── StandaloneMediaInfoWindow.tsx # Автономное окно просмотра MediaInfo из проводника
│   │   ├── SubtitlesSearchModal.tsx      # Интерактивное модальное окно поиска и навигации по субтитрам
│   │   ├── subtitles/                    # Модульная подсистема окна субтитров (инспектор ASS, Follow Playback, виртуализация)
│   │   ├── ChaptersModal.tsx             # Модальное окно навигации по главам видео
│   │   ├── Timeline.tsx                  # Высокоточный таймлайн с изолированным контекстом времени (без лишних ререндеров)
│   │   ├── AudioVisualizer.tsx           # Высокопроизводительный Canvas-визуалайзер аудио-волн
│   │   ├── PresetsSection.tsx            # Секция управления пресетами («Мои пресеты» и «Готовые стили»)
│   │   └── PlaylistDrawer.tsx            # Боковая панель плейлиста (Natural Sort, живой поиск)
│   ├── contexts/                         # Реактивные контексты состояния
│   │   └── PlayerStateContext.tsx        # Трёхуровневый контекст: PlayerStateContext + LiveStateContext + PlayerProgressContext
│   ├── styles/                           # Модульная система стилей (15 модулей Vanilla CSS)
│   │   ├── variables.css                 # CSS-переменные, палитры, UI Scale, параметры свечения
│   │   ├── base.css                      # Глобальный сброс, IDLE-режим, OSD
│   │   ├── titlebar.css                  # Шапка окна и бейдж времени
│   │   ├── video-area.css                # Видеообласть
│   │   ├── controls.css                  # Панель управления, таймлайн, парящий бейдж времени, регулятор громкости
│   │   ├── visualizer.css                # Стили аудио-визуализатора (над таймлайном и тулбар)
│   │   ├── presets.css                   # Стили менеджера пресетов
│   │   ├── context-menu.css              # ПКМ-меню
│   │   ├── modals.css                    # Модальные окна (Настройки с эргономичными сетками, MediaInfo, Chapters, редактор меню)
│   │   ├── mediainfo-modal.css           # Стили кастомного окна и модального отчёта MediaInfo
│   │   ├── side-panel.css                # Панель глав
│   │   ├── track-popover.css             # Меню дорожек
│   │   ├── overlays.css                  # Overlay-элементы (Drag&Drop, Playlist Drawer и др.)
│   │   └── responsive.css                # Адаптивность и медиа-запросы
│   ├── utils/                            # Вспомогательные утилиты
│   │   ├── contextMenuRegistry.ts        # Типизированный реестр 22 доступных элементов меню
│   │   ├── contextMenuLayout.ts          # Сохранение и синхронизация раскладки меню (config/context_menu.json)
│   │   ├── timePositionUtils.ts          # 6 вариантов расположения времени (таймлайн, тулбар, парящий бейдж, Titlebar)
│   │   ├── timeFormatUtils.ts            # 4 формата отображения времени (прошедшее/общее, оставшееся, расчет окончания, миллисекунды)
│   │   ├── controlBarStyleUtils.ts       # Стили нижней панели управления («Парящий остров» и «Пристыкованная плашка»)
│   │   ├── uiThemeUtils.ts               # Управление скруглением углов, масштабом (UI Scale), прозрачностью и шрифтами (UI Font)
│   │   ├── uiSettingsSync.ts             # Синхронизация системных CSS-переменных, палитр и стилей оформления с DOM
│   │   ├── colorUtils.ts                 # Цветовые темы, генерация градиентов и HSL/RGB преобразования
│   │   ├── hotkeyUtils.ts                # Реестр действий, обработка биндов и локальное сохранение
│   │   ├── mediaInfoParser.ts            # Модуль парсинга и русского перевода свойств MediaInfo
│   │   ├── presetsUtils.ts               # Управление, импорт и экспорт пользовательских пресетов
│   │   ├── recentFilesUtils.ts           # Управление списком недавних файлов и синхронизация с локальной историей
│   │   └── timeUtils.ts                  # Высокоточное форматирование временных меток
│   ├── App.tsx                           # Главный контейнер (IDLE, Hotkeys, Zoom/Pan, Drag&Drop, OSD)
│   ├── index.css                         # Единый импорт модулей стилей
│   └── main.tsx                          # Точка входа React
├── src-tauri/                            # Бэкенд (Rust + Tauri v2)
│   ├── capabilities/default.json         # Манифест разрешений Tauri v2
│   ├── src/
│   │   ├── main.rs                       # Точка входа приложения
│   │   ├── lib.rs                        # Инициализация Tauri, HWND-привязка, изоляция WebView2, реестр IPC-команд
│   │   ├── commands/                     # Модульные IPC #[tauri::command] обработчики:
│   │   │   ├── mod.rs                    # Реэкспорт всех подмодулей IPC-команд
│   │   │   ├── types.rs                  # Общие DTO и структуры данных для обмена с фронтендом
│   │   │   ├── playback.rs               # Управление воспроизведением, навигацией, громкостью, скоростью, скриншотами
│   │   │   ├── tracks.rs                 # Управление аудио/видео дорожками, субтитрами и экспорт через FFmpeg
│   │   │   ├── subtitles.rs              # Поиск, парсинг ASS/SRT/VTT субтитров, временные метки и стили
│   │   │   ├── system.rs                 # Системная интеграция, оконный менеджмент, диалоги выбора файлов, ассоциации
│   │   │   ├── config.rs                 # Загрузка и атомарное сохранение настроек AppSettings (config/settings.json)
│   │   │   ├── presets.rs                # Сохранение, загрузка, экспорт и импорт пресетов конфигурации
│   │   │   ├── playlist.rs               # Управление плейлистом, навигация по файлам в папке, Natural Sort
│   │   │   └── history.rs                # Персистентная история воспроизведения и позиций файлов (config/history.json)
│   │   ├── upscale/                      # Модульная подсистема 4K AI апскейлинга:
│   │   │   ├── mod.rs                    # Фасад подсистемы, IPC-команды, unit-тесты
│   │   │   ├── types.rs                  # Модели данных: ModelFileItem, UpscaleSettings, GpuHardwareInfo, Progress
│   │   │   ├── hardware.rs               # Диагностика GPU через Win32 DXGI, определение SM-архитектуры NVIDIA
│   │   │   ├── config.rs                 # Разрешение путей, окружение DLL PATH, сканирование models/onnx/, upscale.conf
│   │   │   ├── downloader.rs             # Асинхронная потоковая загрузка DirectML/TensorRT, распаковка архивов
│   │   │   ├── engine_builder.rs         # Сборка движков TensorRT (.engine), автоконвертация FP32 в FP16, aji_harness и trtexec
│   │   │   └── controller.rs             # Управление libmpv фильтром, фоновая компиляция TensorRT .engine, хоткеи
│   │   ├── ambient.rs                    # Контроллер подсветки черных полос (GPU Blur / Color / Off)
│   │   ├── audio_capture.rs              # Нативный захват звука WASAPI Loopback, быстрый БПФ (FFT Radix-2), 32 полосы
│   │   ├── mediainfo.rs                  # FFI-интеграция с mediainfo.dll и управление автономным окном
│   │   ├── mpv_manager.rs                # FFI-обертка libmpv (vo=gpu-next, WASAPI, D3D11, vf_animejanai, sinc-фильтр)
│   │   ├── system_integration.rs         # Интеграция с Проводником Windows (контекстное меню, ассоциации файлов)
│   │   └── updater.rs                    # Модуль фонового и ручного обновления
│   ├── Cargo.toml                        # Зависимости бэкенда Rust
│   └── tauri.conf.json                   # Конфигурация Tauri v2
├── models/                               # Каталог нейросетей
│   └── onnx/                             # Универсальная папка для размещения ONNX-моделей
├── inference/                            # Папка библиотек инференса (aji.dll, DirectML, TensorRT)
└── Portable-L-MPV/                       # Автономный портативный дистрибутив
    ├── L-MPV.exe                         # Главный исполняемый файл
    ├── libmpv-2.dll                      # Нативная библиотека медиадвижка MPV (со встроенным vf_animejanai)
    ├── mediainfo.dll                     # Нативная библиотека подробного анализа MediaInfo
    ├── ffmpeg.exe                        # Встроенный модуль для прямого экспорта дорожек
    ├── models/onnx/                      # Папка для пользовательских ONNX-моделей
    ├── inference/                        # Библиотеки инференса
    ├── config/                           # Локальные конфигурации (settings.json, context_menu.json, presets/...)
    ├── data/                             # Рабочие данные (data/webview/ — профиль WebView2, data/thumbs/ — кэш обложек)
    ├── logs/                             # Локальные логи (mpv.log, crash.log)
    └── screenshots/                      # Каталог сохранения снимков экрана по умолчанию

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

Все сочетания клавиш и кнопок мыши можно настроить под себя в окне Настроек (Горячие клавиши).

Категория Действие Горячие клавиши по умолчанию
Апскейлинг 4K Выключить апскейлинг Shift + 1
Включить Нейросеть #1 Shift + 2
Включить Нейросеть #2 Shift + 3
Включить Нейросеть #3 Shift + 4
Воспроизведение Воспроизведение / Пауза Space или Клик ЛКМ по видео
Режим повтора (Loop) R
Случайный порядок (Shuffle) Кнопка на панели управления
Перемотка Перемотка назад / вперед (5 сек) /
Перемотка назад / вперед (10 сек) Кнопки -10 / +10 на панели управления
Покадровый шаг назад / вперед , (Б) / . (Ю)
Звук Громкость ±5% / или Колесо мыши над видео
Включить / выключить звук (Mute) M
Смена аудиодорожки A или Клик ЛКМ по кнопке Audio
Меню аудиодорожек и скачивание Клик ПКМ по кнопке Audio
Субтитры Смена дорожки субтитров V или Клик ЛКМ по кнопке Subtitles
Меню субтитров и скачивание Клик ПКМ по кнопке Subtitles
Интерактивное окно и поиск по субтитрам Ctrl + F
Скорость Замедлить / Ускорить (±0.25x) [ / ]
Сброс скорости к нормальной (1.0x) Backspace
Интерфейс и Окно Полноэкранный режим (Fullscreen) F, F11 или Двойной клик ЛКМ
Поверх всех окон (PiP) T
Настройки плеера F2
Главы видео (Chapters) C
Аудио-визуалайзер (Вкл/Выкл) W
Сменить стиль визуализатора Shift + W (3 стиля)
Поворот видео на 90° Alt + R
Масштабирование видео (Zoom & Pan) Ctrl + Колесо мыши
Сброс масштаба к 100% 0
Подсветка полос (Ambient Light) B (циклически: Off → Blur → Color)
Копировать кадр в буфер обмена Ctrl + C
Сохранить кадр (Скриншот PNG) S
Информация о видео (Компактная) I
Свойства MediaInfo (MPC) Shift + F10
Открыть контекстное меню Клик ПКМ по видео
Плейлист и Файлы Боковая панель плейлиста L
Предыдущий / следующий файл PageUp / PageDown
Открыть файл Ctrl + O или O

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

Связь интерфейса React с движком MPV, подсистемой апскейлинга и системными модулями осуществляется через 94 нативные IPC-команды, гарантирующие мгновенный отклик и отсутствие задержек:

  • Апскейлинг и AI Модели (6 команд): get_upscale_status, scan_onnx_models, open_models_folder, apply_upscale_settings, download_recommended_models, switch_upscale_network_hotkey.
  • Воспроизведение и Плейлист (16 команд): open_file, toggle_pause, set_pause, seek, seek_absolute, frame_step, frame_back_step, playlist_prev, playlist_next, get_playlist, play_playlist_item, set_loop_file, set_loop_playlist, toggle_shuffle, get_play_next_on_end, set_play_next_on_end.
  • Громкость и Скорость (2 команды): set_volume, set_speed.
  • Дорожки, Субтитры и FFmpeg (14 команд): get_tracks, set_audio_track, set_subtitle_track, disable_subtitles, load_subtitle_file, load_audio_file, set_video_track, extract_track, get_auto_load_tracks, set_auto_load_tracks, load_external_tracks_for_file, get_subtitles_avoid_ui, set_subtitles_avoid_ui_setting, update_subtitles_avoid_ui.
  • Вид, Зумирование и Окно (7 команд): set_aspect_ratio, set_rotation, set_video_zoom_and_pan, get_video_zoom, get_video_dimensions, toggle_fullscreen.
  • Анализ MediaInfo (5 команд): get_detailed_media_info, is_standalone_mode, get_standalone_mediainfo_path, open_mediainfo_window, toggle_mediainfo_window.
  • Скриншоты и Буфер Обмена (4 команды): take_screenshot, copy_frame_to_clipboard, get_screenshot_dir, set_screenshot_dir.
  • Главы (2 команды): get_chapters, seek_chapter.
  • Метаданные и Позиция (11 команд): get_position, get_duration, get_frame_number, get_frame_count, get_fps, get_media_info, get_playback_state, get_last_position, save_position, save_current_position, get_app_version.
  • Интеграция с Windows (8 команд): register_file_associations, unregister_file_associations, open_default_apps_settings, register_explorer_context_menu, unregister_explorer_context_menu, is_explorer_context_menu_registered, get_windows_accent_color, get_multi_instance, set_multi_instance.
  • Подсветка Полос / Ambient Light (4 команды): get_ambient_settings, apply_ambient_preview, set_ambient_settings, toggle_ambient_mode.
  • Пресеты настроек (8 команд): get_settings_presets, save_settings_presets, save_single_preset, delete_preset_file, rename_preset_file, open_presets_folder, write_text_file, read_text_file.
  • Автообновление (5 команд): check_launch_and_update, check_for_updates, get_available_releases, download_and_install_update, postpone_update.

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

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

  • Node.js v20+ и менеджер пакетов npm
  • Rust (toolchain stable-x86_64-pc-windows-msvc)
  • Нативная библиотека libmpv-2.dll из релиза the-database/mpv-winbuild (с фильтром vf_animejanai)
  • Утилита ffmpeg.exe для прямого экспорта дорожек и mediainfo.dll для детального анализа

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

# 1. Установка зависимостей фронтенда
npm install

# 2. Запуск Vite + Tauri в режиме горячей перезагрузки (Live Reload)
npm run tauri dev

Сборка Исполняемого Файла (Production Build)

# Быстрая сборка только автономного файла .exe с встроенным фронтендом (без инсталлятора):
npm run build:exe
# (или: npm run tauri build -- --no-bundle)

# Полная сборка с созданием Windows-инсталлятора (NSIS):
npm run build:bundle
# (или: npm run tauri build)

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

Формирование Портативной Версии

Для развертывания в папку Portable-L-MPV/:

Copy-Item -Path "src-tauri/target/release/l-mpv.exe" -Destination "Portable-L-MPV/L-MPV.exe" -Force

☕ Поддержать автора / На чай

Если вам нравится медиаплеер L-MPV и вы хотите поддержать дальнейшую разработку и развитие проекта:

Валюта / Сеть Адрес кошелька
💵 USDT (TRC-20) TBXxG4qgXWfTHFAeHy2WkrPE4K82DsGn9d
🔷 USDT (ERC-20) 0x14c3eac6b0629a7437e50dc5831b53c0d752b85c
Bitcoin (BTC) bc1qvy9wue3g5fnz02m4w33spj2njkq9lgahdnpxmc
💎 Gram / TON UQBwphj9gyFSAQ2mGx00Re6bTOSEuXOCj5Nb-g1egGz4_xVf

💬 Сообщество и Связь

Присоединяйтесь к нашему комьюнити и телеграм каналу:
👉 L-MPV Community (Russia)
👉 L-MPV


📄 Лицензия

Проект распространяется под свободной лицензией GNU General Public License v3.0 (GPLv3). Подробная информация доступна в файле LICENSE.

About

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

Topics

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages