Высокопроизводительный, эстетичный и портативный медиаплеер нового поколения.
Построен на базе Tauri v2, React 19, Direct3D 11 и нативного движка libmpv (C-FFI) с поддержкой Real-Time 4K AI Upscaling.
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 стало возможным благодаря невероятным опенсорс-проектам и талантливым людям:
- LANKETT — огромная благодарность дизайнеру за разработку фирменной иконки и визуального логотипа!
- GitHub: @LANKETT
- Telegram-канал: LANKETT WORK
- mpv (GitHub) — за эталонный, мощный и гибкий нативный видеодвижок, обеспечивающий бескомпромиссное качество воспроизведения.
- mpv-AnimeJaNai & the-database — за революционный видеофильтр
vf_animejanaiи возможность воспроизведения нейросетевого 4K-апскейлинга в реальном времени. - Tauri (GitHub) — за легковесный, безопасный и сверхбыстрый кроссплатформенный фреймворк нового поколения на базе Rust и веб-технологий.
- dnd-kit (GitHub) — за современный, гибкий и высокопроизводительный набор Drag & Drop примитивов для React, обеспечивающий интуитивное интерактивное перетаскивание.
🚀 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до новейшей Blackwellsm120).
- Умный автозагрузчик компонентов («Скачать движок»):
- Автоматическое определение установленного 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).
- Level 1 (
- Шрифтовая экосистема из 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/ # Каталог сохранения снимков экрана по умолчанию
Все сочетания клавиш и кнопок мыши можно настроить под себя в окне Настроек (Горячие клавиши).
| Категория | Действие | Горячие клавиши по умолчанию |
|---|---|---|
| Апскейлинг 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 |
Связь интерфейса 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для детального анализа
# 1. Установка зависимостей фронтенда
npm install
# 2. Запуск Vite + Tauri в режиме горячей перезагрузки (Live Reload)
npm run tauri dev# Быстрая сборка только автономного файла .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.







