This is the extended guide. Click HERE to return to the basic guide.
Last tested (and recommended) build: 2018-10-02 (v0.29.1)
For a more detailed documentation click HERE. I only offer a tl;dr version of “most-used” options.
If you want to take a look at my mpv.conf, you can view it HERE.
Keep in mind that all stuff written here is optimized for anime content and might look worse on other content.
If you notice something outdated or wrong, you can contact me via Discord.
Stuff that is good to have or you need for certain options:
Copy the .hook or .glsl files into the „Shaders“ folder inside the mpv folder (create it, if it doesn’t exist):
- SuperXBR / ravu / nnedi3 [don’t use the files inside “compute” or “gather”]
- ravu (use with “gpu-api=vulkan”) [don’t use the files inside “compute” or “gather”]
- SSimDownscaler / KrigBilateral
- Static Noise Luma
- Static Noise Chroma
- (MORE SHADERS)
Copy the .lua files into the „Scripts“ folder inside the mpv folder (create it, if it doesn’t exist):
#The default profile you use for your stuff. Always use this one profile=gpu-hq #The called API. Vulkan is highly recommended. #Use "opengl" if you have compatibility problems gpu-api=vulkan #The backend with the API. Leave it "auto" #Or use "winvk" with "gpu-api=vulkan" or "win" / "angle" with "gpu-api=opengl" gpu-context=auto #Decoding API for 8bit h264 (or whatever your CPU supports) content #Only should be used when you get many frame drops hwdec=dxva2-copy
#Cursor hide in ms cursor-autohide=1000 #Don't close the player after finishing the video keep-open=yes
#Audio language alang=ja,jp,jpn,en,eng,de,deu,ger #Subtitle language slang=en,eng,de,deu,ger
#Forces showing subtitles while seeking through the video demuxer-mkv-subtitle-preroll=yes #Backward compatibility for vsfilter fansubs sub-ass-vsfilter-blur-compat=yes #Fixing the timing for overlaps/gaps when the difference is smaller than 210ms sub-fix-timing=yes
#Default volume when starting the player volume=100 #Max volume of the player volume-max=200
#Output format screenshot-format=png #Same output bitdepth as the video #Set it "no" if you want to save disc space screenshot-high-bit-depth=yes #Compression of the PNG picture (0-10) #Higher value means better compression #Set it "1" if you want to take screenshots while playback screenshot-png-compression=10 #Quality of the JPG picture (0-100) #Higher value means better quality screenshot-jpeg-quality=95 #Output directory screenshot-directory="C:\Users\\Desktop" #Format you want to save the pictures #For knowing what each charakter does, I recommend looking into the documentation screenshot-template="%f-%wH.%wM.%wS.%wT-#%#00n"
You make screenshots with the “s” hotkey.
#Activate dither (value depends on your screen bitdepth) #Can lead to ugly outputs, "auto" is recommended dither-depth=8
Deband & Dynamic Grain:
#Debanding on all videos #Set it "no" if you rather handle it with profiles deband=yes #Deband steps (More = Better quality, but higher GPU cost) deband-iterations=4 #Deband strength (More = Less banding, but more detail loss) deband-threshold=48 #Deband range (More = Less banding, but higher GPU cost) deband-range=16 #Dynamic Grain (More = More dynamic grain) #Set it to "0" in case you use the static grain shader deband-grain=48
You activate debanding with the “h” hotkey.
For an explanation what static grain is, click HERE.
#Luma glsl-shader="C:\mpv\Shaders\noise_static_luma.hook" #Chroma glsl-shader="C:\mpv\Shaders\noise_static_chroma.hook"
If you use shaders like “nnedi3” or “ravu”, make sure you run grain shaders before them!
For an explanation what a resizer is, click HERE.
With the “i” hotkey you can see how many delayed and dropped frames you have.
Normal: Regular scaler
Italic: Irregular scaler: Look at (4*) for sinc (with blackman)
Italic & Underlined: Based on a shader: Look at (1*) for FSRCNNX/ravu/nnedi3, look at (2*) for SSimDownscaler, look at (3*) for KrigBilateral
UP- & DOWNSCALE
(Best for anime)
|Medium||spline16||spline16||sinc (with blackman)|
#Luma upscale scale=... #Luma downscale dscale=... #Chroma up- & downscale cscale=...
Luma (scale/dscale) = Brightness (black & white) information
Chroma (cscale) = Colour information
Luma is more visible for the human eye.
A better resizer means higher GPU cost.
sinc (with blackman):
cscale=sinc cscale-window=blackman cscale-radius=3
Based on a shader:
#Shaders which override "scale"/"dscale"/"cscale" to a certain point (depending on the shader you use) glsl-shader= ...
(1*) nnedi3 and ravu are only upscaling the video with a power of 2. For example, if your clip is 1280×720 and your screen 1920×1080, the video gets upscaled to 2560×1440. That means “someone” still needs to downscale it. In that case, the “dscale” you set up.
glsl-shader="C:\mpv\Shaders\FSRCNN_x2_r2_16-0-2.glsl" scale=ewa_lanczos fbo-format=rgba16hf (rgba16f for "gpu-api=opengl")
Higher “nns” means more neurons (better quality).
Don’t use “win8x6”, always use “win8x4”.
glsl-shader="C:\mpv\Shaders\nnedi3-nns32-win8x4.hook" scale=ewa_lanczos fbo-format=rgba16hf (rgba16f for "gpu-api=opengl")
Higher “r” means higher radius (better quality).
glsl-shader="C:\mpv\Shaders\ravu-r4.hook" scale=ewa_lanczos fbo-format=rgba16hf (rgba16f for "gpu-api=opengl")
glsl-shader="C:\mpv\Shaders\SSimDownscaler.glsl" dscale=gaussian fbo-format=rgba16hf (rgba16f for "gpu-api=opengl")
glsl-shader="C:\mpv\Shaders\KrigBilateral.glsl" cscale=mitchell fbo-format=rgba16hf (rgba16f for "gpu-api=opengl")
For an explanation what anti-ringing is, click HERE.
#Luma upscale deringing (Higher = Less rining, but more detail loss) scale-antiring=0.7 #Luma downscale deringing (Higher = Less rining, but more detail loss) dscale-antiring=0.7 #Chroma upscale deringing (Higher = Less rining, but more detail loss) cscale-antiring=0.7
For an explanation what interpolation is, click HERE.
#Subtitle blending in scenechanges (smoother effect) blend-subtitles=yes #Set the fps as the max. of your monitor Hz (only useful and needed with "interpolation=yes) video-sync=display-resample #Activate interpolation interpolation=yes #Interpolation method [look at the table below] tscale=...
If you have playback issues, deactivate interpolation.
|Sharpest & Smoothest (and slowest)||box with sphinx (*)|
(*) box with sphinx: tscale=box tscale-window=sphinx tscale-radius=1.0 #lower (e.g. 0.95) = sharper; higher (e.g. 1.05) = smoother tscale-clamp=0.0
For an explanation what deinterlace is, click HERE.
#Autodetect if deinterlace is needed deinterlace=auto
You activate deinterlace with the “g” hotkey (“d” if you don’t use my input.conf).
Only use it with interlaced sources (like MPEG2/h264 .ts files)
#You can set up functions like debanding automatically for some sources #The p.filename, "" is the interesting part here #There are also other conditions, but doing it by string with filename is probably the most accurate [HorribleSubs] profile-desc=cond:string.match(p.filename, "HorribleSubs")~=nil deband=yes [HorribleSubs-revert] profile-desc=cond:string.match(p.filename, "HorribleSubs")==nil deband=no
In some cases where you need special characters like “-“, you’ve to use “%” for recognizing it as a character and not function:
[EraiRaws] profile-desc=cond:string.match(p.filename, "Erai%-raws")~=nil deband=yes