
раскрыть тему
как с помощью ИИ улучшить качество mp4, есть 5 минутный ролик с музыкой и разрешением 144?
https://github.com/xinntao/Real-ESRGAN
sudo apt install -y ffmpeg git python3 python3-venv python3-pip imagemagick
python3 -m venv venv
source venv/bin/activate
git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN # заходишь в папку с кодом
pip3 install -r requirements.txt
mkdir -p weights
wget -P weights https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-wdn-x4v3.pth
wget -P weights https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth
Поэтапный двухэтапный апскейл
Структура папок
~/Real-ESRGAN/ ├─ input/ # Исходное видео │ └─ input.mp4 ├─ frames/ # Кадры с исходного видео ├─ upscaled_stage1/ # Кадры после первого апскейла x2 ├─ upscaled_stage2/ # Кадры после второго апскейла x2 ├─ weights/ # Модели .pth ├─ output/
# 1. Разбираем видео на кадры с шумоподавлением
mkdir -p frames upscaled_stage1 upscaled_stage2 output
ffmpeg -i input/input.mp4 -vf "hqdn3d=1.5:1.5:6:6" -vsync 0 -q:v 1 frames/frame_%06d.jpg
-vsync 0 → точное количество кадров
-q:v 1 → высокая визуальная точность для JPEG
hqdn3d → слегка сглаживает пиксельные квадраты
frame_%06d.jpg → нумерация кадров с шестью цифрами: frame_000001.jpg, frame_000002.jpg и т.д.
# 2. Первый апскейл x2
python3 inference_realesrgan.py \
-n realesr-general-wdn-x4v3 \
-i frames \
-o upscaled_stage1 \
--fp32 \
--num_processes 8 \
--outscale 2
# 3. Второй апскейл x2
python3 inference_realesrgan.py \
-n realesr-general-wdn-x4v3 \
-i upscaled_stage1 \
-o upscaled_stage2 \
--fp32 \
--num_processes 8 \
--outscale 2
# 4. Сборка видео с оригинальным звуком и масштабирование до 720p
ffmpeg -i upscaled_stage2/frame_%06d.jpg -i input/input.mp4 \
-map 0:v -map 1:a \
-vf "scale=1280:720:flags=lanczos" \
-c:v libx264 -preset slow -crf 18 \
output/final_720p.mp4
scale=1280:720:flags=lanczos → аккуратное масштабирование
Сохраняется оригинальный звук
CRF 18 → хорошее качество
# 5. (Опционально) Лёгкое пост-шарпирование
ffmpeg -i output/final_720p.mp4 -vf "unsharp=5:5:0.5" output/final_720p_sharp.mp4
# 6. Очистка временных файлов
rm -rf frames upscaled_stage1 upscaled_stage2
Разбор по шагам:
--fp32 → стабильность на CPU
--num_processes 8 → Использует все потоки i5 (8) для ускорения
Время для 5 минут видео: ~1.5–3 часа на твоём CPU
-i upscaled_stage2/frame_%06d.jpg → кадры после апскейла
-i input/input.mp4 → исходное видео с аудио
-map 0:v → берём видео из первой части (кадры)
-map 1:a → берём аудио из исходного видео
⚡ Почему звук синхронизирован:
FFmpeg автоматически подстраивает аудио под количество видеофреймов.
-vsync 0 на этапе разбора кадров гарантирует, что каждый кадр соответствует исходной длительности.
Формат и кодек видео
Для Real‑ESRGAN нет строгих требований к формату, главное:
Любой контейнер: .mp4, .mkv, .mov
Кодек: H.264 (libx264) или H.265 (libx265) подходят
Разрешение: любое, у тебя 144p → ок, просто пиксели будут крупные
Фреймрейт: любой, Real‑ESRGAN сохранит оригинальный
Пример mp4 с H.264:
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -preset fast input_for_esr.mp4
Маленькие хитрости для лучшего вида
Какие настройки лучше для 144p
Scale x4 — оптимум
Не делай x8 — будет пластик
Лучше:
144p → ~576p (x4)
потом обычный апскейл до 720p/1080p
✔ Перед апскейлом можно:
ffmpeg -i input.mp4 -vf "hqdn3d" denoise.mp4
✔ После — лёгкое зерно:
-vf "noise=alls=5:allf=t"
Если результат «мыльный»
После сборки можно слегка подшарпить:
ffmpeg -i output_720p.mp4 -vf "unsharp=5:5:0.8" final.mp4
Если видео сильно пиксельное, можно попробовать hqdn3d=1:1:3:3 на первом шаге — квадраты будут ещё меньше, но детали чуть мягче.
Мягкое шумоподавление перед апскейлом
Вместо сильного hqdn3d=1.5:1.5:6:6 можно попробовать мягкий вариант, чтобы не терять детали:
-vf "hqdn3d=1:1:3:3"
Идеально для 144p → квадраты сглаживаются, но текстура остаётся.
Используй WDN-модель для CPU
realesr-general-wdn-x4v3.pth → мягче сглаживает артефакты.
На шумных видео квадраты меньше, чем у обычной realesr-general-x4v3.pth.
💡 Для более «чистого» результата можно экспериментировать с --outscale (x2, x3).
Пост-шарпирование после сборки видео
Лёгкий unsharp возвращает детали без добавления квадратиков:
ffmpeg -i output/final_720p.mp4 -vf "unsharp=5:5:0.5" output/final_720p_sharp.mp4
Можно менять параметры: 5:5:0.5 → горизонтальное/вертикальное ядро и сила резкости.
Сохранение FPS и синхронизация аудио
Используем -vsync 0 при разборе кадров:
ffmpeg -i input.mp4 -vsync 0 frames/frame_%06d.jpg
Сохраняет точное количество кадров → звук не отстаёт при сборке.
Можно временно уменьшить качество JPEG для промежуточных кадров, чтобы не перегружать диск:
-q:v 2 # чуть меньше качества, но быстрее
После апскейла результат всё равно будет высоким.
Настройка финального масштабирования
Вместо bilinear используем Lanczos для резкости:
-vf "scale=1280:720:flags=lanczos"
Альтернатива bicubic — чуть мягче, но квадраты почти исчезают.