mpv выглядит как минималистичный плеер с чёрным окном и парой горячих клавиш. На деле это один из самых настраиваемых инструментов для видео в Linux: конфигурация текстом, профили под разные типы материала, аппаратное декодирование, встроенные скрипты и управление через сокет. Он не пытается быть медиатекой, зато открывает почти всё и почти на любом железе. Ниже — установка, нормальный конфиг и диагностика, когда видео тормозит или рассыпается.
Установка и первый запуск
Пакет есть в репозиториях всех популярных дистрибутивов. Если нужны свежие исправления для новых кодеков, смотрите сборки в Flatpak или репозитории проекта.
# Debian, Ubuntu, Mint
sudo apt install mpv
# Fedora
sudo dnf install mpv
# Arch
sudo pacman -S mpv
# Flatpak
flatpak install flathub io.mpv.Mpv
flatpak run io.mpv.Mpv
Запуск простой: mpv film.mkv. Пробел ставит паузу, стрелки перематывают на пять секунд, f включает полноэкранный режим, 9 и 0 меняют громкость, q закрывает окно. Клавиша i показывает статистику: разрешение, кодек, частоту кадров, потерянные кадры и текущий декодер. Именно этот экран нужно смотреть первым при любых жалобах на производительность.
Где лежит конфигурация
Пользовательские настройки читаются из ~/.config/mpv/mpv.conf. Для Flatpak путь другой: ~/.var/app/io.mpv.Mpv/config/mpv/mpv.conf. Строки вида ключ=значение применяются ко всем запускам, а секции в квадратных скобках задают профили.
[default]
vo=gpu-next
hwdec=auto-safe
save-position-on-quit=yes
keep-open=yes
osc=yes
sub-auto=fuzzy
sub-font-size=42
volume=90
volume-max=120
screenshot-format=png
screenshot-directory=~/Pictures/mpv
vo=gpu-next использует современный рендерер и лучше справляется с масштабированием и HDR. hwdec=auto-safe включает аппаратное декодирование только для проверенных комбинаций; если драйвер ведёт себя странно, поставьте hwdec=no и сравните. save-position-on-quit запоминает место просмотра, keep-open не закрывает окно после конца файла.
Профили под разные материалы
Профиль — набор переопределений, который применяется по имени. Это удобнее, чем каждый раз править основной конфиг. Например, для аниме нужен крупный шрифт субтитров, а для архивного видео — другая интерполяция.
[anime]
profile-desc=Аниме и сериалы с внешними субтитрами
sub-font-size=48
sub-border-size=3
sub-shadow-offset=1
sub-auto=all
[old-film]
profile-desc=Низкое разрешение и зерно
scale=bilinear
deband=no
Вызов: mpv --profile=anime series.mkv. Профиль можно включить и на лету через меню или скрипт.
Аппаратное декодирование и вывод
Аппаратный декодер снимает нагрузку с процессора, но переносит часть работы на драйвер. На Intel и AMD обычно работает VA-API, на NVIDIA — NVDEC через проприетарный драйвер. Проверить, что плеер получил ускорение, можно по строке VO и hwdec на экране статистики.
mpv --hwdec=auto-safe video.mkv
mpv --hwdec=vaapi --vo=gpu-next video.mkv
mpv --list-options | grep -i hwdec
mpv --no-config video.mkv
Флаг —no-config запускает плеер без пользовательских настроек. На старом драйвере попробуйте vo=gpu и сравните результат. Это главный приём диагностики: если с ним всё работает, виноват конфиг или скрипт, а не файл и не драйвер. Для Wayland иногда полезно проверить вывод через gpu-next и gpu, но не меняйте всё сразу — по одному параметру за раз.
Субтитры, аудио и синхронизация
mpv сам подхватывает внешние файлы с совпадающим именем. Если субтитры отстают, их сдвигают клавишами z и x, а общий сдвиг сохраняется в watch-later. Клавиша j переключает субтитры, # — аудиодорожки, а список потоков виден на экране статистики.
mpv --alang=rus,eng --slang=rus,eng film.mkv
mpv --sub-file=film.ru.srt film.mkv
mpv --sub-delay=-0.4 film.mkv
mpv --audio-file=commentary.mka film.mkv
Порядок языков задаётся предпочтением, а не жёстким выбором: если русской дорожки нет, плеер возьмёт английскую. Для постоянного хранения добавьте alang и slang в mpv.conf.
Горячие клавиши и свои привязки
Файл input.conf позволяет переопределить управление. Синтаксис простой: клавиша, команда, необязательный комментарий. Готовые команды перечислены в документации.
# ~/.config/mpv/input.conf
Ctrl+Shift+s screenshot
Ctrl+Shift+r cycle-values video-rotate 0 90 180 270
Alt+Right add chapter 1
Shift+Left seek -1 exact
Shift+Right seek 1 exact
Комбинации с Ctrl и Shift удобны, потому что не конфликтуют с одиночными клавишами.
Скрипты и управление через сокет
Встроенный скрипт stats показывает подробную статистику, а скрипт console открывает командную строку прямо в окне. Сторонние скрипты на Lua кладут в ~/.config/mpv/scripts/; после перезапуска они загружаются автоматически.
mkdir -p ~/.config/mpv/scripts
mpv --script="$HOME/.config/mpv/scripts/myscript.lua" video.mkv
mpv --input-ipc-server=/tmp/mpv.sock --idle
echo '{"command":["loadfile","/home/user/film.mkv"]}' | socat - /tmp/mpv.sock
echo '{"command":["get_property","time-pos"]}' | socat - /tmp/mpv.sock
Сокет нужен для автоматизации: можно подключить пульт, стриминговую панель или скрипт, который ставит видео на паузу при звонке. Формат сообщений — JSON, по одному объекту на строку. Для сокета в домашнем каталоге права выставьте так, чтобы файл не был доступен другим пользователям.
Диагностика проблем
Если видео дёргается, сначала посмотрите на потерянные кадры и загрузку декодера. Высокий CPU при hwdec=auto-safe означает, что ускорение не включилось. Если картинка зелёная или полосатая, попробуйте другой вывод и отключите аппаратное декодирование. Звук не совпадает с видео — проверьте частоту дискретизации и задержку в настройках аудиовыхода.
- Чёрный экран: другой вывод или декодер.
- Нет звука: проверьте устройство вывода.
- Рывки: отключите аппаратное декодирование.
mpv --log-file=/tmp/mpv.log --msg-level=all=v video.mkv
tail -n 60 /tmp/mpv.log
mpv --audio-device=help
mpv --vo=help
Лог пишется подробно, поэтому включайте его на один запуск. Ищите строки с error, failed и hwdec.
Итог
mpv хорош тем, что не навязывает сценарий. Минимальный конфиг из десяти строк уже даёт аппаратное декодирование, запоминание позиции и удобные субтитры. Дальше добавляйте профили под свои коллекции, привязки под привычки и сокет, если нужна автоматизация. При любой проблеме начинайте с —no-config и лога: это быстрее, чем перебирать настройки наугад.