Skip to content

L-MPV v1.2.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 23:27

Release v1.2.0 — Обновление функций дорожек, студийное аудио и исправления Fullscreen

🚀 Новые функции (Features)

  • Извлечение и скачивание дорожек (Audio & Subtitles Extraction):

    • Добавлена возможность скачивать аудиодорожки и субтитры прямо из видеофайла.
    • Реализована как во всплывающих меню нижней панели управления, так и в контекстном меню (ПКМ по видео).
    • Прямое копирование без потерь (-c copy): дорожки извлекаются в оригинальном качестве без перекодирования.
    • Интеллектуальный Fallback: автоматическое многопоточное транскодирование (-threads 0), если исходный кодек не поддерживается целевым контейнером (например, субтитры mov_text из MP4 конвертируются в .srt).
    • Мгновенный экспорт внешних файлов: если субтитры или звук подключены из внешнего файла, они копируются напрямую файловой системой (std::fs::copy), минуя FFmpeg.
    • Поддержка сетевых потоков (URL): корректное скачивание дорожек из онлайн-видео с автоматическим выбором папки.
    • Безопасная очистка названий файлов от недопустимых символов Windows.
  • Настройки сохранения дорожек:

    • В меню «Настройки» ➔ «Общие» добавлен переключатель: «Скачивать дорожки в ту же папку, где находится видео».
    • При включённой опции дорожка мгновенно сохраняется рядом с файлом без лишних диалогов.
    • При выключенной опции открывается системный проводник Windows для выбора целевой папки.
  • Студийное качество звука (Audiophile Profile):

    • Аудиодвижок переведён на высококачественный Windows WASAPI драйвер (ao=wasapi).
    • Активирован 32-точечный sinc-ресемплер студийного класса (audio-resample-filter-size=32).
    • Включён 14-битный фазовый сдвиг (16 384 фаз) с линейной интерполяцией между отсчётами.
    • Добавлена нормализация сведения многоканального звука (audio-normalize-downmix=yes), исключающая перегрузы и клиппинг при выводе на стереодинамики/наушники.

🎨 Интерфейс и дизайн (UI / UX)

  • Редизайн списков дорожек:
    • Разделены области клика: блок с названием дорожки и галочкой подсвечивается независимо, а кнопка скачивания вынесена в отдельную плитку со своим фоном и hover-эффектом.
    • Фиксированный слот под галочку: кнопка скачивания больше не смещается при выборе активной дорожки.
    • Всплывающее меню дорожек на нижней панели ограничено компактной шириной 400px.
    • Подменю аудиодорожек и субтитров в контекстном меню сохранено в стандартной гармоничной ширине 220px с аккуратной кнопкой 28×28px.
  • Индикация процесса загрузки:
    • Во время извлечения дорожки иконка скачивания превращается во вращающийся спиннер Loader2.
    • Дополнительный индикатор загрузки синхронно отображается на нижней панели управления правее названия активной дорожки.
  • Плейлист и уведомления:
    • В плейлисте теперь всегда единообразно отображаются реальные имена файлов с расширениями.
    • Внедрена естественная алфавитно-цифровая сортировка (файлы 1, 2, 10 сортируются по порядку).
    • Добавлено OSD-уведомление при создании снимка экрана (клавиша S).
    • Устранены лишние браузерные подсказки (атрибуты title) на кнопках для чистоты интерфейса.

🛠 Исправления и оптимизация (Bug Fixes & Performance)

  • Гарантированное скрытие панели задач Windows в Fullscreen:
    • Окно плеера в полноэкранном режиме принудительно переводится в HWND_TOPMOST, что физически исключает просвечивание или наложение панели задач (Shell_TrayWnd).
    • Динамический Z-порядок: при переключении на другое окно (Alt+Tab или клик по второму монитору) статус Topmost временно снимается, позволяя браузерам и другим окнам свободно открываться поверх плеера. При возврате фокуса плееру статус Topmost мгновенно восстанавливается.
    • Устранён баг смещения и уменьшения окна в угол (0, 0) с помощью DWM-клоакинга (DWMWA_CLOAK) и нативного управления окном.
  • Оптимизация рендеринга React:
    • Высокочастотный таймер воспроизведения (10–60 FPS) изолирован в отдельном контексте PlayerProgressContext.
    • Устранены паразитные каскадные перерисовки кнопок управления, заголовка и модальных окон при движении таймлайна.
  • Буферизация и кэширование MPV:
    • Настроен 32 МБ прямой буфер пакетов и 16 МБ кэш обратной перемотки (demuxer-max-back-bytes), обеспечивающий мгновенную перемотку назад без повторного обращения к диску.