MPV · медийният плейър за power users
bub.im · cheatsheet
MPV · медийният плейър за power users
Минималистичен, кросплатформен open-source плейър върху FFmpeg и libplacebo. Почти няма интерфейс и точно това е силата му: всичко се управлява с текстови файлове, клавиши, скриптове на Lua и JavaScript и IPC. Тук: защо mpv, сравнение с VLC и MPC-HC/BE, инсталация, конфигурация, клавиши, качество на картината и автоматизация.
Защо MPV
| Предимство | На практика |
|---|---|
| Минималистичен и лек | Без менюта и ленти: видеото заема целия прозорец, а контролите (OSC) се появяват само при движение на мишката. Стартира почти мигновено и почти не товари системата. |
| Качество на рендиране | Рендерът gpu-next (libplacebo) е по подразбиране от 0.41. Профилът high-quality, наследник на gpu-hq, дава ewa_lanczossharp скалиране, по-точен HDR tone mapping и dithering.силна страна |
| Конфигурация с текстови файлове | mpv.conf за опции, input.conf за клавиши, script-opts за скриптове. Профили, които се включват ръчно или автоматично по условие: резолюция, име на файл, HDR. |
| Скриптове на Lua и JavaScript | Вградените OSC, статистика, конзола и менюта са самите те скриптове. Всичко може да се подмени или разшири: uosc, thumbfast, SponsorBlock или собствен код. |
| Кросплатформен и open-source | Windows, Linux, macOS, BSD, Android. Лиценз GPLv2+, с възможност за LGPL компилация на библиотеката. |
| Създаден за автоматизация | Пълен команден ред, JSON IPC през сокет или named pipe, libmpv за вграждане. IINA, Celluloid и mpc-qt са графични интерфейси върху libmpv. |
| Без кодек пакети | Декодирането е от вградения FFmpeg. Адреси от YouTube и стотици други сайтове се отварят директно чрез yt-dlp. |
Архитектура
Данните минават отляво надясно. Всичко, което управлява плейъра, говори с ядрото през един и същ слой от свойства, команди и събития. Затова клавиш, ред в mpv.conf, Lua скрипт и IPC съобщение са взаимозаменяеми.
Сравнение: MPV, VLC, MPC-HC/BE
| Аспект | MPV | VLC | MPC-HC / MPC-BE |
|---|---|---|---|
| Интерфейс | Минимален, OSC при движение | Пълнофункционален, менюта | Класически, прост |
| Ресурси | Много лек | По-тежък | Лек |
| Настройки | Текстови файлове, профили, скриптове | GUI менюта и разширени предпочитания | GUI плюс DirectShow филтри |
| Качество на картината | Отлично: libplacebo, high-qualityнай-добро | Добро | Много добро с MPC Video Renderer или madVR |
| HDR към SDR | Пълен tone mapping в рендера | Основен | Чрез MPC Video Renderer или madVR |
| Декодери | Вграден FFmpeg | Вградени (libavcodec и собствени модули) | Вградени: MPC-HC носи LAV Filters, MPC-BE собствени филтри. Външни по избор. |
| Разширяване | Lua, JavaScript, JSON IPC, libmpv | Lua разширения | Без скриптове; уеб интерфейс и команден ред |
| Платформи | Windows, macOS, Linux, BSD, Android | Всички, включително iOS и Android | Само Windows |
| Крива на учене | Стръмнаконфигурация | Лесна | Средна |
| Разработка (окт. 2026) | Стабилна 0.41.0 (декември 2025) плюс нощни git билдове | Стабилна 3.0.x; 4.0 все още е бета | MPC-HC (clsid2) 2.8.x и MPC-BE се развиват активно |
Кога кое да избереш
| Избери | Когато |
|---|---|
| VLC | Искаш нещо, което просто работи навсякъде без настройки: телефон, телевизор, мрежови потоци, DVD. |
| MPC-HC MPC-BE | На Windows си и търсиш баланс между контрол и удобство, особено с madVR или MPC Video Renderer за максимално качество на картината. |
| MPV | Искаш максимално качество и пълен контрол, не държиш на GUI и обичаш да конфигурираш, скриптираш и автоматизираш.power user |
| IINA Celluloid mpc-qt | Искаш двигателя на mpv с нормален интерфейс: IINA на macOS, Celluloid на Linux, mpc-qt на Windows. Може да изостават от mpv с някои функции на рендера.libmpv |
Инсталация
mpv.io препоръчва най-новата версия от git. Почти всички двоични пакети са от трети страни, изброени на страницата за инсталация.
| Платформа | Канал | Бележки |
|---|---|---|
| Windows | Билдове на shinchiro или zhongfly (GitHub) | Най-използваните. Пакетите x86_64-v3 изискват процесор с AVX2; за по-стари процесори вземи обикновения x86_64.avx2 |
| Windows | Scoop, Chocolatey | scoop install extras/mpv или choco install mpvio. Лесни обновления. |
| Windows, macOS | CI билдове на mpv-player | Първопартийни, от последния commit. Основно за тестване, без поддръжка на енкодиране. |
| macOS | Homebrew, MacPorts, stolendata | brew install mpv дава CLI без .app бандъл; stolendata предлага готов .app. GUI алтернатива: IINA. |
| Linux | Arch, Gentoo, Flatpak | pacman -S mpv, emerge media-video/mpv, flatpak install flathub io.mpv.Mpv. |
| Linux | Debian, Ubuntu | Пакетите в дистрибуциите често са стари. mpv.io препоръчва mpv-build или външно apt хранилище (fruit.je).остарели |
| Изходен код | mpv-build | Скриптове, които сглобяват статичен mpv с най-новите FFmpeg, libplacebo и libass. |
| Android | mpv-android (Google Play) | Изброен на mpv.io. |
| Готови пакети | mpv-easy mpv-build, MPV Manager | Уеб конфигуратор, който сглобява mpv със скриптове и интерфейс по избор (mpv-easy); инсталатор и мениджър на обновления от mpv.rocks.трети страни |
# Windows, Scoop PS> scoop bucket add extras PS> scoop install extras/mpv yt-dlp # Windows, mpv 0.41+: регистрация като медиен плейър (файлови асоциации, приложения по подразбиране) PS> mpv --register # като администратор: за всички потребители PS> mpv --unregister # връща всичко обратно, без да трие mpv.exe # Linux $ sudo pacman -S mpv yt-dlp # Arch $ flatpak install flathub io.mpv.Mpv # всяка дистрибуция # macOS $ brew install mpv yt-dlp # от изходен код, с най-новите FFmpeg, libplacebo и libass $ git clone https://github.com/mpv-player/mpv-build.git $ cd mpv-build && ./rebuild -j4 $ sudo ./install
Файлове и пътища
~~/ в mpv означава конфигурационната папка. Използвай го в пътища вътре в конфигурацията, за да работят на всяка система.
| Файл или папка | Къде | За какво |
|---|---|---|
| Конфигурационна папка | Windows: %APPDATA%\mpv\ или portable_config\ до mpv.exeLinux, macOS: ~/.config/mpv/ | Ако portable_config съществува, тя печели. Удобно за USB или синхронизирана папка.portable |
| mpv.conf | в конфигурационната папка | Опции като в командния ред, но без --. Секции в [скоби] са профили. |
| input.conf | същата папка | Собствени клавиши. Презаписва само тези, които дефинираш; останалите остават по подразбиране. |
| scripts/ | същата папка | .lua и .js файлове или папки с main.lua / main.js. Зареждат се автоматично при старт. |
| script-opts/ | същата папка | <име>.conf с настройки за съответния скрипт, например osc.conf или uosc.conf. |
| fonts/ | същата папка | Шрифтове за OSD и субтитри. Някои UI скриптове слагат тук иконен шрифт. |
| shaders/ | същата папка | GLSL шейдъри, зареждани с glsl-shaders=~~/shaders/име.glsl. |
| watch_later/ | state папката на mpv | Позиции, записани с Q или save-position-on-quit. Пътят се сменя с watch-later-dir. |
# пълното съдържание на вграден профил $ mpv --show-profile=high-quality # всички опции и стойностите им по подразбиране $ mpv --list-options # имената на клавишите така, както ги вижда mpv (натискай в прозореца) $ mpv --input-test --force-window --idle # старт без никаква потребителска конфигурация, за сравнение $ mpv --no-config film.mkv
mpv.conf и профили
Солидна основа за начало. Всеки ред е опция от командния ред без --; коментарите започват с #.
# mpv.conf · примерна основа # ── видео ───────────────────────────────────── profile=high-quality # наследникът на gpu-hq vo=gpu-next # по подразбиране от 0.41, тук само за яснота hwdec=auto-safe # хардуерно декодиране само през проверени API #gpu-api=vulkan # или d3d11 на Windows при проблеми с драйвера #video-sync=display-resample #interpolation=yes # плавно движение при различни fps и Hz # ── аудио ───────────────────────────────────── alang=bg,bul,en,eng audio-file-auto=fuzzy # зарежда външни аудио файлове с близко име volume-max=150 # ── субтитри ────────────────────────────────── slang=bg,bul,en,eng sub-auto=fuzzy sub-font-size=44 # ── поведение ───────────────────────────────── keep-open=yes # не затваря прозореца в края на файла save-position-on-quit=yes autofit-larger=90%x90% cursor-autohide=1000 screenshot-format=png screenshot-dir=~~desktop/ ytdl-format=bv*[height<=1080]+ba/b # ── авто-профил: deband само за видео с ниска резолюция ── [low-res] profile-cond=height ~= nil and height < 720 profile-restore=copy deband=yes
Вградени профили
| Профил | Какво прави | Кога |
|---|---|---|
| fast | Bilinear скалиране, без dither и без измерване на HDR пиковете | Слаб интегриран GPU, работа на батерия, много прозорци едновременно. |
| по подразбиране | Балансирани стойности | Повечето системи. Не се пише никъде. |
| high-quality | ewa_lanczossharp, по-точен HDR | Дискретна видеокарта, домашно кино. Deband вече не е част от профила: включвай го с b или с авто-профил.препоръчан |
| gpu-hq | Остарял псевдоним на high-quality | Работи, но е deprecated от 0.37. Смени го в старите конфигурации.deprecated |
| low-latency | Минимални буфери | Камери, capture карти, потоци на живо. |
| sw-fast | По-бързо софтуерно скалиране | Видео изходи без GPU. |
| pseudo-gui | Прозорец без терминал, режим на изчакване | Включва се сам при старт от иконка или файлов мениджър. |
Клавиши по подразбиране
Пълният списък в самия плейър: ? или менюто с клавиши g b. Главни и малки букви са различни клавиши.
Възпроизвеждане и навигация
| Клавиш | Действие |
|---|---|
| Space p | Пауза и пускане |
| ← → | Назад и напред с 5 s, до най-близкия ключов кадър |
| ↑ ↓ | Напред и назад с 60 s |
| Shift+← → | Точно 1 s назад и напредexact |
| Shift+↑ ↓ | Точно 5 s напред и назад |
| Ctrl+← → | Към предишния и следващия субтитър |
| PgUp PgDn | Следваща и предишна глава |
| Shift+PgUp PgDn | 10 минути напред и назад |
| Home | Към началото |
| Shift+Backspace | Отменя последното превъртане |
| . , | Кадър напред и назад, с пауза |
| [ ] | Скорост ÷1.1 и ×1.1 |
| { } | Скорост ×0.5 и ×2 |
| Backspace | Нормална скорост |
| > Enter < | Следващ и предишен файл в плейлиста |
| l | A-B цикъл: първо натискане A, второ B, трето изчиства |
| L | Безкраен цикъл на текущия файл |
| Ctrl+r | Презарежда файла от текущата позиция |
| Ctrl+v | Добавя път или URL от клипборда в плейлиста |
| q Q | Изход; изход със запомняне на позицията |
Картина, звук, субтитри, менюта
| Клавиш | Действие |
|---|---|
| f, двоен клик | Цял екран; Esc излиза |
| T | Прозорецът винаги отгоре |
| Alt+0 1 2 | Размер на прозореца ×0.5, ×1, ×2 |
| Alt+стрелки, Alt++ - | Местене и мащабиране на картината; Alt+Backspace нулира |
| A | Съотношение 16:9, 4:3, 2.35:1, оригинал |
| w W | Panscan: по-малко и повече изрязване на черните ленти |
| b d | Deband; deinterlace |
| Ctrl+h | Хардуерно декодиране включено и изключено |
| 1 до 8 | Контраст, яркост, гама, наситеност, по двойки минус и плюс |
| 9 0 m | Звук -2 и +2; без звук |
| Ctrl++ - | Аудио закъснение +100 ms и -100 ms |
| # _ | Следваща аудио и видео пътечка |
| j J v | Следващи и предишни субтитри; скрий или покажи |
| z Z | Субтитрите 100 ms по-рано и по-късно |
| F G | Субтитрите по-малки и по-големи |
| r R | Субтитрите нагоре и надолу |
| s S | Screenshot със и без субтитри; Ctrl+s снима целия прозорец |
| i I | Статистика веднъж и постоянно; страниците се сменят с цифрите |
| ? | Списък на всички активни клавиши |
| ` | Конзола за команди |
| o O | Показва прогреса; OSD постоянно или само при действие |
| Del | Видимост на OSC: никога, автоматично, винаги |
| Ctrl+p | Меню: плейлист, пътечки, глави, история, устройства |
| g и буква | Директно меню: gp плейлист, gs субтитри, ga аудио, gc глави, gh история, gb клавиши |
| Десен бутон | Контекстно меню0.41 |
| F8 F9 | Плейлист и списък с пътечки на екрана |
input.conf рецепти
Формат: КЛАВИШ команда аргументи. Модификатори: Shift, Ctrl, Alt, Meta. Командата ignore изключва клавиш.
# input.conf · собствени клавиши, останалите остават по подразбиране WHEEL_UP seek 10 # колелото превърта вместо да сменя звука WHEEL_DOWN seek -10 RIGHT seek 5 exact # точно превъртане вместо по ключови кадри LEFT seek -5 exact MBTN_LEFT cycle pause # клик в картината = пауза F1 apply-profile high-quality F2 apply-profile fast y cycle-values speed 1.25 1.5 2 1 k cycle-values video-rotate 90 180 270 0 h cycle-values hwdec auto-safe no n show-text "${filename} · ${time-pos} / ${duration}" Ctrl+q ignore
Команден ред
Всяка опция от mpv.conf работи и като --опция=стойност. Времената са във формат [[чч:]мм:]сс.
| Опция | Ефект |
|---|---|
| –profile=high-quality | Включва профил; няколко се разделят със запетая |
| –hwdec=auto-safe –hwdec=no | Хардуерно декодиране включено и изключено |
| –start –end –length | Само част от файла |
| –ab-loop-a –ab-loop-b | A-B цикъл от командния ред |
| –loop-file=inf –loop-playlist=inf | Безкраен цикъл на файл или плейлист |
| –shuffle –playlist=list.m3u | Разбъркване; зареждане на плейлист |
| –aid –sid –sub-file –audio-file | Избор на пътечки (--sid=no без субтитри) и добавяне на външни |
| –speed –volume –mute | Скорост и звук при старт |
| –fs –ontop –geometry –autofit | Цял екран, винаги отгоре, позиция и размер на прозореца |
| –no-video –force-window –idle | Само звук; прозорец и без файл; изчакване на команди |
| –ytdl-format | Формат при URL; изисква yt-dlp в PATH |
| –input-ipc-server | Отваря JSON IPC сокет или named pipe (секция 13) |
| –no-config –config-dir | Без потребителска конфигурация; друга конфигурационна папка |
| -v –log-file=mpv.log | Подробен лог за диагностика |
| –o=out.mkv | Енкодиране вместо възпроизвеждане. Липсва в CI билдовете.encode |
| –register –unregister | Само Windows, 0.41+: регистрация като медиен плейър в системата |
# филм в най-доброто качество, на цял екран $ mpv --profile=high-quality --fs film.mkv # само откъс, на безкраен цикъл $ mpv --start=12:30 --end=13:00 --loop-file=inf clip.mp4 # цяла папка с музика, разбъркана, без видео прозорец $ mpv --no-video --shuffle --loop-playlist=inf ~/Music/ # YouTube до 1080p $ mpv --ytdl-format="bv*[height<=1080]+ba/b" "https://www.youtube.com/watch?v=ID" # празен прозорец, в който се пускат файлове с drag and drop $ mpv --idle --force-window # диагностика на проблемен файл без собствени настройки $ mpv --no-config -v --log-file=mpv.log broken.ts # заобикаляне на проблем с драйвер: софтуерно декодиране и класическият рендер $ mpv --hwdec=no --vo=gpu film.mkv
Качество на картината
Започни с profile=high-quality и пипай отделни опции само ако знаеш какво целиш. Натоварването се вижда на страница 2 от статистиката (i, после 2).
| Опция | Стойности | Кога и защо |
|---|---|---|
| vo | gpu-next, gpu | gpu-next (libplacebo) е по подразбиране от 0.41; gpu остава като резервен вариант. |
| gpu-api | auto, vulkan, d3d11, opengl | Vulkan е най-добре поддържан; d3d11 на Windows при проблеми с драйвера. |
| hwdec | no (по подразбиране), auto-safe, auto, vulkan, d3d11va, nvdec, vaapi, videotoolbox | Пести CPU и батерия. От 0.41 се предпочита Vulkan декодиране, когато е налично. |
| scale cscale dscale | ewa_lanczossharp, spline36, bilinear | Увеличаване, хрома, намаляване. high-quality ползва ewa_lanczossharp, fast ползва bilinear. |
| deband | yes, no, клавиш b | Изглажда стъпалата в градиентите на силно компресирано видео. Изтрива и фини детайли, затова не е включен по подразбиране. |
| video-sync interpolation tscale | display-resample, yes, oversample | Плавно движение, когато fps на видеото не съвпада с честотата на екрана (24 fps на 60 Hz). |
| glsl-shaders | ~~/shaders/име.glsl | Upscale с невронни мрежи (FSRCNNX, ArtCNN), Anime4K за анимация, KrigBilateral за хромата. Тежки за GPU.gpu |
| target-colorspace-hint | auto (по подразбиране от 0.41) | Подава HDR на дисплея, когато той го поддържа; иначе mpv прави tone mapping към SDR. |
| tone-mapping | auto, bt.2390, spline, st2094-40 | Алгоритъм за HDR към SDR. auto избира разумно; сменяй само при видим проблем. |
| dither-depth | auto | Премахва banding при 8-битов изход. auto е стойността по подразбиране. |
Скриптове и разширения
Скриптовете се слагат в ~~/scripts/. Вградените могат да се изключат с опции като osc=no, когато ги заменяш.
| Скрипт | Произход | Какво прави |
|---|---|---|
| osc.lua | вграден | Стандартните контроли на екрана. |
| stats.lua | вграден | Статистика (i, I) и списък с клавишите (?). |
| commands.lua | вграден | Конзолата за команди (`). |
| select.lua | вграден | Менюта за плейлист, пътечки, глави, история, устройства и клавиши. |
| context_menu.lua | вграден, 0.41 | Контекстно меню с десен бутон. |
| ytdl_hook.lua | вграден | Отваря URL адреси чрез yt-dlp. |
| auto_profiles.lua | вграден | Изчислява profile-cond и включва профилите автоматично. |
| uosc | общност, tomasklaen/uosc | Модерен интерфейс с менюта, лента за прогрес и бутони. Заменя OSC.популярен |
| thumbfast | общност, po5/thumbfast | Миниатюри при посочване върху лентата за прогрес. Работи с uosc и други интерфейси. |
| autoload.lua | репото на mpv, TOOLS/lua | Зарежда останалите файлове от папката в плейлиста. |
| mpv_sponsorblock | общност, po5 | Прескача спонсорски сегменти в YouTube видео. |
| mpv-easy | общност, mpv-easy | TypeScript и React инструментариум за скриптове, собствен интерфейс и уеб конфигураторът mpv-build за готов пакет. |
-- ~~/scripts/title.lua : показва заглавието при всеки нов файл mp.register_event("file-loaded", function() local title = mp.get_property("media-title", "") mp.osd_message("▶ " .. title, 3) end) -- собствен клавиш; може да се пренасочи в input.conf с: X script-binding show-time mp.add_key_binding("Ctrl+t", "show-time", function() local pos = mp.get_property_number("time-pos", 0) mp.osd_message(string.format("%.3f s", pos)) end)
// ~~/scripts/speed-reset.js : при пауза връща нормалната скорост
mp.observe_property("pause", "bool", function (name, paused) {
if (paused) mp.set_property_number("speed", 1);
});
IPC и автоматизация
mpv приема JSON команди през Unix сокет или Windows named pipe. Всяка команда от input.conf работи и тук, а свойствата се четат, променят и наблюдават. Това е основата за дистанционни управления, Stream Deck, Home Assistant и собствени скриптове.
# Linux, macOS $ mpv --input-ipc-server=/tmp/mpvsocket --idle & $ echo '{ "command": ["loadfile", "film.mkv"] }' | socat - /tmp/mpvsocket $ echo '{ "command": ["get_property", "time-pos"] }' | socat - /tmp/mpvsocket $ echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket $ echo '{ "command": ["observe_property", 1, "time-pos"] }' | socat - /tmp/mpvsocket # Windows, named pipe PS> mpv --input-ipc-server=\\.\pipe\mpvsocket --idle PS> $p = New-Object System.IO.Pipes.NamedPipeClientStream('.', 'mpvsocket', 'InOut') PS> $p.Connect(); $w = New-Object System.IO.StreamWriter($p); $w.AutoFlush = $true PS> $w.WriteLine('{ "command": ["cycle", "pause"] }')
Капани
| Къде | Поведение |
|---|---|
| gpu-hq | Остарял псевдоним от 0.37. В нови конфигурации пиши profile=high-quality. |
| Неточно превъртане | ← → скачат до ключов кадър. За точност: Shift плюс стрелка или seek N exact в input.conf. |
| hwdec и видео филтри | Видео филтрите (vf) изискват copy-back вариант, например hwdec=auto-copy. Иначе филтърът не се прилага. |
| x86_64-v3 билдове | Изискват AVX2. На стари процесори mpv не стартира: вземи обикновения x86_64 пакет. |
| Linux пакети | Debian и Ubuntu често носят стара версия без нужните функции. mpv.io препоръчва mpv-build или външно хранилище. |
| URL адреси | Без yt-dlp в PATH линковете от YouTube не се отварят. Обновявай yt-dlp често, сайтовете се променят. |
| CI билдове | Официалните CI билдове нямат енкодиране (--o). Ползвай билдовете на shinchiro или zhongfly. |
| Конфигурацията не се прилага | Пусни с -v и провери кой mpv.conf е зареден. portable_config до mpv.exe има предимство пред %APPDATA%\mpv. Сравни с --no-config. |
| GUI върху libmpv | IINA, Celluloid и mpc-qt може да изостават от mpv с функции на рендера, а настройките им често се правят през собствения GUI. |
| Файлови асоциации | На Windows: mpv --register (0.41+). За всички потребители го пусни като администратор. |
Връзки
| Ресурс | Адрес | Бележка |
|---|---|---|
| Официален сайт | mpv.io | Начална страница на проекта. |
| Инсталация | mpv.io/installation | Билдове и пакети по платформи, поддържан от проекта. |
| Ръководство | mpv.io/manual | Всички опции, команди и свойства. |
| Изходен код | github.com/mpv-player/mpv | Release notes, issues, wiki. |
| mpv.rocks | mpv.rocks | Независим сайт: сравнения с VLC и MPC-BE, препоръчани GUI-та, MPV Manager.трета страна |
| mpv-easy mpv-build | mpv-easy.github.io/mpv-build | Уеб конфигуратор за готов mpv пакет със скриптове и интерфейс.трета страна |
| Windows билдове | shinchiro/mpv-winbuild-cmake | Най-използваните Windows билдове. |
| mpv-build | mpv-player/mpv-build | Компилиране с най-новите зависимости. |
0 comments