English | Русский
Пошаговая инструкция по настройке полностью портативной сборки для realtime-интерполяции видео через RIFE в MPV.
Important
Инструкция ориентирована на NVIDIA RTX и OS Windows, поэтому в interpolation.vpy используется Backend.TRT (TensorRT) — самый производительный бэкенд для карт NVIDIA RTX.
Warning
На RTX 3070(без андервольта или разгона 240w) с TensorRT realtime-интерполяция доступна:
x2: source ≤ 1080p ~30 fps -любая базовая модель; source == 1440p ~24 fps -4.17_v2_light, 4.6v2.x3: source ≤ 1080p ~30 fps4.4v2;
На менее производительных картах стоит рассмотреть альтернативы:
- Lossless Scaling
- SVP (optical flow интерполяция)
- Интерполяция в файл с последующим просмотром:
- Flowframes
- enhancr
- Отправлять вывод VapourSynth в
ffmpeg, а потом черезmkvtoolnixзаменить видеоряд в исходном.mkv
C:\MPV_VS\ ← корень (путь без пробелов и кириллицы)
├── MPV\
│ ├── mpv.exe ← mpv player
│ └── portable_config\ ← конфиг mpv
│ ├── mpv.conf
│ ├── input.conf
│ └── vs\
│ └── interpolation.vpy
│
└── VS\ ← Python + VapourSynth + vs-mlrt
├── python.exe
├── pythonYYY.dll
├── pythonYYY._pth ← отредактирован (шаг 1)
├── pythonYYY.zip
├── pip.pyz ← создаётся pip (шаг 2)
├── Lib\site-packages\ ← (шаг 3.1)
│ └── vapoursynth\...
├── portable.vs ← из архива VS Portable (шаг 3)
├── VSScript.dll ← из архива VS Portable (шаг 3)
├── VSPipe.exe ← из архива VS Portable (шаг 3)
├── прочие файлы vapoursynth
├── vs-coreplugins\
├── vsmlrt.py ← (шаг 4.2)
├── vs-plugins\ ← распакованный vs-mlrt (шаг 4.1)
│ ├── vstrt.dll / vsort.dll ← зависит от бэкенда
│ ├── LSMASHSource.dll ← (шаг 4.3)
│ ├── прочие DLL бэкенда
│ └── models\
│ └── rife\ ← модели RIFE (шаг 4.4)
│ ├── rife_v4.17_lite.onnx
│ └── rife_v4.25.onnx
├── sdk\
└── wheel\
└── vapoursynth-XX-cpYYY-abi3-win_amd64.whl
Warning
НЕ НИЖЕ версии в имени VapourSynth wheel-файла. Например: для VapourSynth64-Portable-R73.zip → wheel → vapoursynth-73-cp312-abi3-win_amd64.whl минимальная версия Python 3.12. Для файла vapoursynth-73-cp38-cp38-win_amd64.whl cp38-cp38 означает что версия Python исключительно 3.8
- Скачать Python 3.xx.x → "Windows embeddable package (64-bit)" с python.org
- Распаковать содержимое в
C:\MPV_VS\VS\ - Обязательно отредактировать файл
python312._pth— раскомментировать последнюю строку:
python312.zip
.
-#import site
+import site
+Lib/site-packages
⚠️ Без этого pip не сможет установить пакеты, аsite-packagesне будет виден интерпретатору.
- Скачать pip.pyz и положить в
C:\MPV_VS\VS\
- Скачать последний VapourSynth Portable (
.zip) - Распаковать в
C:\MPV_VS\VS\— появятся подкаталогиsdk\,vs-plugins\,wheel\,vsgenstubs4...
Открыть cmd в C:\MPV_VS\VS\ и выполнить:
python.exe pip.pyz install wheel/vapoursynth-XX-cpYYY-abi3-win_amd64.whl
⚠️ ЗаменитьXX-cpYYYна скачанную версию VS. Точное имя файла видно вwheel\.
Important
Для бэкендов ORT CUDA и TensorRT версия драйвера NVIDIA должна соответствовать требованиям конкретного релиза vs-mlrt.
Проверяйте release notes.
Например, для vs-mlrt v15.15 требуется CUDA 13, а значит драйвер NVIDIA >= 581.80.
Скачать архивы vsmlrt-windows-x64-tensorrt.v*.7z.001 и vsmlrt-windows-x64-tensorrt.v*.7z.002 с vs-mlrt releases.
Распаковать в C:\MPV_VS\VS\vs-plugins\.
vsmlrt.py входит в архив бэкенда и после распаковки лежит в vs-plugins\.
Его необходимо переместить на уровень выше — в C:\MPV_VS\VS\, чтобы Python-интерпретатор мог его импортировать:
C:\MPV_VS\VS\vs-plugins\vsmlrt.py → C:\MPV_VS\VS\vsmlrt.py
Скачать dll-файлы из релизов каждого плагина и поместить в C:\MPV_VS\VS\vs-plugins\:
L-SMASH-Works LSMASHSource.dll
Из архива нужен только файл
*.dll— остальное можно не извлекать.
Скачать и распаковать onnx-файлы в C:\MPV_VS\VS\vs-plugins\models\rife\
rife_v4.25
[rife_v4.17_lite](https://github.com/AmusementClub/vs-mlrt/releases/download/external-models/
rife_v4.17_lite.7z)
Дополнительные версии (например rife_v4.26, rife_v4.25_heavy):
External Models.
Распаковать с сохранением структуры в C:\MPV_VS\VS\vs-plugins\models\:
C:\MPV_VS\VS\vs-plugins\models\rife\rife_v4.25.onnx
C:\MPV_VS\VS\vs-plugins\models\rife_v2\rife_v4.25.onnx
Tip
По моим внутренним тетам v2 версии на ~17-23% производительнее.
Добавить C:\MPV_VS\VS\ в системный PATH, чтобы vspipe и python были доступны из любого каталога.
Вариант A — через powershell (рекомендуется):
$userPath = [Environment]::GetEnvironmentVariable("PATH", "User"); [Environment]::SetEnvironmentVariable("PATH", "$userPath;C:\MPV_VS\VS\", "User")Вариант B — через GUI:
Win + R → systempropertiesadvanced → "Переменные среды" → Path (пользовательская) → "Создать" → C:\MPV_VS\VS\
Вариант C — через cmd:
Warning
Команда setx обрезает значение PATH до 1024 символов. Если ваш PATH длинный — используйте вариант A или B.
setx PATH "%PATH%;C:\MPV_VS\VS\"После изменения PATH необходимо перезапустить терминал, чтобы изменения вступили в силу.
- Скачать mpv
- Распаковать в
C:\MPV_VS\MPV\ - Создать каталоги:
C:\MPV_VS\MPV\portable_config\
C:\MPV_VS\MPV\portable_config\vs\
При наличии каталога
portable_configрядом сmpv.exe, mpv использует его вместо%AppData%\mpv. Путь~~/в конфигах будет указывать наportable_config\.
Important
В репозитории MPV-Config можно найти авторскую конфигурацию MPV.
Tip
Использовать backend TRT_RTX вместо TRT не имеет смысла — производительность ниже, RGBH и fp16 недоступны,
portable-установка усложняется, а выигрыш в скорости компиляции движка для конечного пользователя несущественен.
Выберите вариант для активации интерполяции:
auto- включает интерполяцию при старте для всех источников<= 1080p30fpsmanual- ручная активация поF1
Скачать и разместить файлы:
interpolation.vpy— готовый скрипт интерполяции TensorRT дляNVIDIA RTX
⚠️ по умолчанию скрипт использует модельrife_v4.25, если с ним воспроизведение не работает используйте более лёгкую модель RIFE.
| Файл | Режим | Куда положить |
|---|---|---|
| interpolation.vpy | all | C:\MPV_VS\MPV\portable_config\vs\ |
| mpv.conf | auto |
C:\MPV_VS\MPV\portable_config\ |
| mpv.conf | manual |
C:\MPV_VS\MPV\portable_config\ |
| input.conf | manual |
C:\MPV_VS\MPV\portable_config\ |
Warning
Первый запуск может быть долгим(до 5 минут), из-за компиляции движка. Наберитесь терпения.
Если MPV плеер по каким-либо причинам не подходит, можно использовать MPC-HC:
- скачать
- Распаковать в
C:\MPV_VS\MPC-HC\ - Скачать скрипт интерполяции interpolation.vpy и поместить в
C:\MPV_VS\MPC-HC\_vapoursynth - скачать SynthFilters.zip и извлечь из архива
vapoursynth_filter_64.axвC:\MPV_VS\MPC-HC\_vapoursynth - скачать vapoursynth_filter.ini и поместить в
C:\MPV_VS\MPC-HC - Запустить
MPC-HCплеер и открыть настройки:External filters:- нажать
Add filter->Browseи выбратьC:\MPV_VS\MPC-HC\_vapoursynth\vapoursynth_filter_64.ax - выбрать добавленный фильтр
VapourSynth Filterи активироватьPrefer - двойным кликом по
VapourSynth Filterоткрыть параметры фильтра и нажавBrowseвыбрать скрипт интерполяции interpolation.vpy
- нажать
Internal filters -> Video decoder- сначала попробовать Hardware decoder:
d3d11и Hardware Device to use:Automatic(CopyBack). - если
d3d11не работает, выбрать Hardware decoder:DXVA2(copy-back)и Hardware Device to use:Automatic
- Подтвердив настройки, при следующем запуске видео фильтр будет автоматически применён.
Warning
В MPC фильтр будет применяться для всего контента. Поэтому скрипт отличается от того что используется для MPV, и содержит проверку разрешения экрана и максимальный поддерживаемый fps источника. Параметры MAX_FPS_ в скрипте необходимо настроить под себя, потому что дефолт может ограничивать возможности вашего железа.
Tip
Если возникнут проблемы с настройкой — не стесняйтесь, создавайте issue.