Mpv: Difference between revisions
(Refactor the HW acceleration part -- ongoing work.) |
(Reverting 2 latest edits by Gdonval - unexplained changes to document structure, please read ArchWiki:Contributing#The 3 fundamental rules) |
||
Line 8: | Line 8: | ||
{{Related articles end}} | {{Related articles end}} | ||
[http://mpv.io/ mpv] is a media player based on [[MPlayer]] and | [http://mpv.io/ mpv] is a media player based on [[MPlayer]] and MPlayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. A comprehensive (although admittedly incomplete) list of differences between ''mpv'' and the aforementioned players can be found [https://github.com/mpv-player/mpv/blob/master/DOCS/mplayer-changes.rst here]. | ||
== Installation == | == Installation == | ||
Line 14: | Line 14: | ||
[[Install]] the {{Pkg|mpv}} package from the [[official repositories]] or {{AUR|mpv-git}} from the [[Arch User Repository]]. | [[Install]] the {{Pkg|mpv}} package from the [[official repositories]] or {{AUR|mpv-git}} from the [[Arch User Repository]]. | ||
=== Front ends === | |||
''mpv'' provides an elegant User Interface called OSC which appears when moving the mouse. To ease casual users, other graphical interfaces exist: | |||
* {{App|Baka MPlayer|Free and open source, cross-platform, ''libmpv'' based multimedia player (Qt 5).|https://github.com/u8sand/Baka-MPlayer/|{{Pkg|baka-mplayer}}, {{AUR|baka-mplayer-git}}}} | |||
* {{App|bomi|Powerful and easy to use multimedia player (Qt 5).|https://bomi-player.github.io/|{{AUR|bomi}}, {{AUR|bomi-git}}}} | |||
* {{App|GNOME MPV|A simple frontend for ''mpv'' (GTK+ 3).|https://github.com/gnome-mpv/gnome-mpv/|{{AUR|gnome-mpv-git}}, {{AUR|gnome-mpv}}}} | |||
* {{App|[[Wikipedia:SMPlayer|SMPlayer]]|Qt multimedia player with extra features (CSS themes, YouTube integration, etc.) (Qt 5).|http://smplayer.sourceforge.net/|{{Pkg|smplayer}}}} | |||
* {{App|xt7-player-mpv|Qt/Gambas GUI to mpv with a rich set of configurable options including filters and drivers, ladspa plugins support as well as library/playlist managment, YouTube, online radios, podcasts, DVB-T and more.|https://github.com/kokoko3k/xt7-player-mpv|{{AUR|xt7-player-mpv-git}}}} | |||
{{Note|CMPlayer/''bomi'' packages provide ''mpv'' internally.}} | |||
== Configuration == | == Configuration == | ||
''mpv'''s configuration is read from the files {{ic|mpv.conf}} (settings), {{ic|input.conf}} (key bindings), and {{ic|lua-settings/osc.conf}} (on screen display). For a full list of options, see the man page or the github docs [https://github.com/mpv-player/mpv/blob/master/DOCS/man/options.rst options.rst], [https://github.com/mpv-player/mpv/blob/master/DOCS/man/input.rst input.rst], and [https://github.com/mpv-player/mpv/blob/master/DOCS/man/osc.rst osc.rst]. | |||
If the [[environment variable]] {{ic|XDG_CONFIG_HOME}} is not set, user configuration files will be read from the {{ic|~/.config/mpv}} directory. System-wide configuration files are read from the {{ic|/etc/mpv}} directory. | |||
=== An example {{ic|input.conf}} file === | === An example {{ic|input.conf}} file === | ||
Line 35: | Line 44: | ||
Alt+i add video-pan-y 0.05 | Alt+i add video-pan-y 0.05 | ||
Alt+k add video-pan-y -0.05 | Alt+k add video-pan-y -0.05 | ||
== Tips and Tricks == | == Tips and Tricks == | ||
=== | === Hardware Decoding === | ||
Unlike ''mplayer'' and ''mplayer2'', ''mpv'' has both [[VA-API]] and [[VDPAU]] support built-in. To enable it, run ''mpv'' with the {{ic|1=--hwdec='method'}} option. You can find list of all available methods looking for {{ic|1=--hwdec=<api>}} in [[man page]] {{ic|mpv (1)}}. To make this persistent, add the line {{ic|1=hwdec=''method''}} to your configuration file. | |||
=== | |||
When hardware decoding is used, the video output should generally be set to {{ic|opengl}} or {{ic|opengl-hq}} (or possibly {{ic|vdpau}} if using {{ic|1=hwdec=vdpau}}). In particular, {{ic|1=hwdec=vaapi}} should be used with {{ic|1=vo=opengl}} [https://github.com/mpv-player/mpv/blob/master/DOCS/man/vo.rst] if possible. | |||
If hardware decoding cannot be used, ''mpv'' will automatically fall back to software decoding. | |||
=== High quality video output === | === High quality video output === |
Revision as of 17:25, 25 April 2016
mpv is a media player based on MPlayer and MPlayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. A comprehensive (although admittedly incomplete) list of differences between mpv and the aforementioned players can be found here.
Installation
Install the mpv package from the official repositories or mpv-gitAUR from the Arch User Repository.
Front ends
mpv provides an elegant User Interface called OSC which appears when moving the mouse. To ease casual users, other graphical interfaces exist:
- Baka MPlayer — Free and open source, cross-platform, libmpv based multimedia player (Qt 5).
- bomi — Powerful and easy to use multimedia player (Qt 5).
- https://bomi-player.github.io/ || bomiAUR, bomi-gitAUR
- GNOME MPV — A simple frontend for mpv (GTK+ 3).
- SMPlayer — Qt multimedia player with extra features (CSS themes, YouTube integration, etc.) (Qt 5).
- xt7-player-mpv — Qt/Gambas GUI to mpv with a rich set of configurable options including filters and drivers, ladspa plugins support as well as library/playlist managment, YouTube, online radios, podcasts, DVB-T and more.
Configuration
mpv's configuration is read from the files mpv.conf
(settings), input.conf
(key bindings), and lua-settings/osc.conf
(on screen display). For a full list of options, see the man page or the github docs options.rst, input.rst, and osc.rst.
If the environment variable XDG_CONFIG_HOME
is not set, user configuration files will be read from the ~/.config/mpv
directory. System-wide configuration files are read from the /etc/mpv
directory.
An example input.conf
file
Copying the following into ~/.config/mpv/input.conf
will add a number of useful keybindings to mpv such as rotating video 90 degrees, zooming and panning.
Alt+RIGHT add video-rotate 90 Alt+LEFT add video-rotate -90 Alt+- add video-zoom -0.25 Alt+= add video-zoom 0.25 Alt+j add video-pan-x -0.05 Alt+l add video-pan-x 0.05 Alt+i add video-pan-y 0.05 Alt+k add video-pan-y -0.05
Tips and Tricks
Hardware Decoding
Unlike mplayer and mplayer2, mpv has both VA-API and VDPAU support built-in. To enable it, run mpv with the --hwdec='method'
option. You can find list of all available methods looking for --hwdec=<api>
in man page mpv (1)
. To make this persistent, add the line hwdec=method
to your configuration file.
When hardware decoding is used, the video output should generally be set to opengl
or opengl-hq
(or possibly vdpau
if using hwdec=vdpau
). In particular, hwdec=vaapi
should be used with vo=opengl
[1] if possible.
If hardware decoding cannot be used, mpv will automatically fall back to software decoding.
High quality video output
The opengl-hq
video output is an OpenGL output preconfigured with various options by the mpv developers. To make use of it, specify it in your configuration file.
~/.config/mpv/mpv.conf
vo=opengl-hq
This comes with a GLSL debanding filter by default, which may lead to bad performance for some users, and can reduce the visual quality of grainy content. You can disable it easily though.
~/.config/mpv/mpv.conf
vo=opengl-hq:deband=no
Automatically resuming from where you left off
The default key to quit mpv, saving the video's current position and state, is Shift+q
. This key can be changed by adding the quit_watch_later
string in the key bindings configuration file.
To always automatically save the current playback position on quit, start mpv with a flag --save-position-on-quit
. To make option permanent, add line save-position-on-quit
to configuration file.
Volume is too low
Set softvol-max=value
in your configuration file to a reasonable amount, such as softvol-max=600
. Additionally (or alternatively), you can utilize dynamic range compression with af=drc
.
Quickly cycle between multiple aspect ratio
You can cycle between aspect ratios using Shift+a
from version 0.8.0 onwards.
Drawing to a root window
Run mpv with --wid=0
. This tells mpv to draw onto a window with a window ID of 0.
Always show GUI
It may be useful to always show the GUI window, even for audio files, especially when mpv is not started from terminal. This can be done by using --force-window
option.
Use as a browser plugin
With the help of mozpluggerAUR, mpv can be used in a supported browser to play video. See Browser plugins#MozPlugger for configuration details. This coupled with a user script such as ViewTube, allows you to use mpv in place of a site's integrated video player.
Browser plugins#Video players workarounds page shows other easy ways to watch videos.
Improving mpv as a music player with Lua scripts
The development of mpv's Lua scripts are documented in DOCS/man/lua.rst and examples are shown in TOOLS/lua of the mpv repository. This blog post introduces the music.lua script, which shows how Lua scripts can be used to improve mpv as a music player.
Twitch.tv streaming over mpv
If youtube-dl is installed, mpv can directly open a Twitch livestream.
Alternatively, livestreamer can be used to stream Twitch. See Livestreamer#Twitch.
Another alternative based on Livestreamer is this Lua script: https://gist.github.com/ChrisK2/8701184fe3ea7701c9cc
youtube-dl and choosing formats
The default --ytdl-format
is bestvideo+bestaudio/best
. For youtube videos that have 4K resolutions available, this may mean that your device will struggle to decode 4K VP9 encoded video in software even if the attached monitor is much lower resolution.
Setting the right youtube-dl format selectors can fix this easily though. In the following configuration example, only videos with a vertical resolution of 1080 pixels or less will be considered.
ytdl-format=bestvideo[height<=?1080]+bestaudio/best
If you wish to avoid a certain codec altogether because you cannot hardware-decode it, you can add this to the format selector. For example, we can additionally choose to ignore VP9 as follows:
ytdl-format=bestvideo[height<=?1080][vcodec!=vp9]+bestaudio/best
youtube-dl audio with search
To find and play audio straight from your terminal with mm ' SEARCH '
put the following function in your .bashrc
:
mm () { youtube-dl ytsearch:"$@" -q -f bestaudio --ignore-config --console-title --print-traffic --max-downloads 1 --no-call-home --no-playlist -o - | mpv --no-terminal --no-video --cache=256 -; }
Use mpv with a compositor
If you're using a compositor (e.g. in KDE Plasma 5) and find that composition is disabled (e.g. in Plasma this would make you unable to present windows or see window thumbnails in the default app switcher) when mpv is playing a video, try x11-bypass-compositor=no
Vapoursynth
Vapoursynth is an alternative to AviSynth that can be used on Linux and allows for Video manipulation via python scripts. Vapoursynths python scripts can be used as video filters for mpv.
To use vapoursynth filters you have to install the vapoursynth
package and compile mpv with the --enable-vapoursynth
build flag.
Debanding (flash3kyuu)
To use the f3k_db debanding filter install vapoursynth-plugin-flash3kyuu_deband-gitAUR[broken link: Template:Aur-mirror] and write a python script that uses the vapoursynth extension.
The following sample script can be used to enable debanding in mpv.
import vapoursynth as vs core = vs.get_core() clip = video_in clip = core.std.Trim(clip, first=0, length=500000) clip = core.f3kdb.Deband(clip, grainy=0, grainc=0, output_depth=16) clip.set_output()
Finally specify the python script in the config file or use a command line argument when executing mpv.
mpv --vf=vapoursynth=f3k_db.py <video_file>