Page 1 of 1

Why i switched from VLC to mpv

Posted: Mon Apr 29, 2024 7:06 am
by Vamp898
As i am an VLC user since 2005 and i used this software since a very long time, and i know others here use it as well, i thought i might share my experience on why i switched from VLC to mpv, because it directly relates to why i use MakeMKV in the first place.

I use MakeMKV because BluRay have significantly higher Image (and surprisingly Sound) Quality. Because even BluRay is still compressed, it is already a compromise and i do not want to further compromise than what BluRay already are.

That being said, VLC is not bad and i never had any issues with VLC, except for some HDR issues, but i only have two HDR BluRay so it doesn't matter.

But after it got recommended to me like a hundred times, i finally wanted to give mpv a shot and used it for 2 weeks. Long enough to be able to give some insight.

First things first, mpv is less user friendly. You have to configure it via a config file. That has advantages and disadvantages. At first, when you don't know any parameter, of course it feels tedious. But if you got the hang of it, you have much more control over everything, it is much easier to change the config and you can share your config. It has an OSD that is very basic, most things are controlled using the keyboard.

So if you absolutely hate the idea to control your play via simple key commands, you can stop reading here.

You can, for example, have different profiles (i'll get to that soon) that do different things depending on what file you're playing, what GPU use use, whats the folder name where the file lies and so on.

But i am here for image quality so get that out of the way first. There are two big reasons why i use mpv

=== HDR ===
I am watching all my BluRay on a 4K Display and i own/watch two type of BluRay (no surprise). 1080(i/p) and 4K HDR+

With both, the image quality is significantly better on mpv. Its a day and night difference, especially for HDR. And i am not talking about "real" HDR (thats look identical on both), but the SDR downmix options of mpv (that look significantly better than ""real"" HDR).

For those who are not into HDR that much, how HDR looks like is a mix of what your OS/GPU/Monitor think it should look like based on the information written on the BluRay. So HDR looks different for everyone, depending on your screen, your GPU, your OS and so on.

For some people, it looks very good and balanced, for some people it looks like saturation and contrast have been turned to 11 (or -5). ""Real"" HDR is a very inconsistent experience and you have almost no control over what your hardware is doing out of the information on the BluRay.

And because humans do not see the difference between 16bit or 8bit (when mastered identically) on a display anyway, it doesn't matter if its real HDR or not. And this is where mpv shines. They have an insanely good rendering engine that does an amazing job downmixing HDR so SDR and you have full control over how it is done. You can decide for yourself when things clip, how much shadow details are recovered and so on. So you have all the advantages of an 10+bit HDR but an consistent and reproducible viewing experience on _all_ displays, no matter if they are HDR capable or not.

I have an 100% HDR compatible Setup and i disabled HDR because i get better image quality, no matter the BluRay, when using mpv and control the HDR-->SDR Downmix myself. And i know what you're thinking, what an bullsh*t, how can an SDR downmix look better than the original HDR, but showing my BluRay to two work colleges and my family (especially my father who is very picky about that), all agreed, it does look better. There is better highlight recovery, more details in the shadow and everything just looks more balanced and natural. It doesn't have this insane "wow" effect the overdone HDR causes to some, the opposite. It looks almost like the normal 1080p Version of the same BluRay just with more details in highlights and shadows (exactly why you would want HDR in the first place). So your mileage might vary, but its free opensource software. So you're not loosing anything by giving it a try.

It does have an disadvantage though, it needs GPU power. Depending on your GPU (especially iGPU), you might tweak some settings to archive a non-stuttering HDR experience. Especially when watching on an 4K Display. With my portable MiniPC only using an iGPU, i can not use the best settings on my 4K Display. The GPU is just not fast enough (the result still looks better than ""real"" HDR, but the last few percent of image quality are missing.

Especially features like non-delay peak detection or that the dynamic range is calculated for very single instead on average and fun things like that, that can help to recover the tiny last bit of details in clouds or reflections in windows and stuff like that^^

=== Full Control over up- and downscaling ===
But unrelated to HDR i also noticed a big improvement in using mpv (with my config) over VLC on average, especially when watching 1080i or lower (DVD) on a 4K screen.

With VLC, DVDs look surprisingly bad on a 4K screen and of course. Its very low resolution (with high compression) on a 4K Display. But the upscaling algorithm i use in my mpv config make look DVD crips, sharp and detailed on an 4K screen without artifacts or ringing. Its not magic, it does have its limit, but it looks good. If not perfect, at least it looks normal and not blurry and mushed. People don't notice, its an DVD. For a lot of DVDs, i get the same result as an average FullHD YouTube Video (whch is remarkable).

Disadvantage: It takes GPU Power, a lot. Especially with DVD. Watching an DVD on my 4K Display with highest settings causes my GPU usage to go up to 65% (compared to 1~2% on VLC or the fast profile on mpv). But the result is 100% worth it.

=== Profile support===
For the different types of videos (4K HDR BluRay, normal BluRay, DVD, YouTube Downloads), i use different settings. For example, for YouTube Videos, i use the "fast" profile that causes almost no load on the CPU/GPU because the source material quality is so low, that it doesn't really matter. Especially when watching things like Critical Role or stuff like that, where image quality is not really important. So i rather have energy efficiency and a silent fan than 3% better image quality. For 4K HDR BluRay i have two different set of settings, depending on if i watch them on my 4K Screen or my WQHD/FHD Screen and so on.

If you don't care about energy efficiency or stuff like that and your GPU is fast enough, you can just use highest quality for everything and be done. I personally do care and so put some effort into building profiles i select via right-clicking the video file in my file explorer.

===Can play HTTP Streams live===
One big issue i had with VLC that can _not_ be changed, VLC just can not do that, is playing HTTP Streams live. The longer you're playing the stream, the more delay will there be between live and your player. Even with simple Audio Streams, in my tests, after playing an stream for 10 Minutes, you already had 15 seconds delay.

mpv has an detection for that and catches up with the live stream. I don't know how it does, but you can not see/hear it. If you play both streams simultaneously, VLC just starts to lag more and more behind the live stream but the mpv stream doesn't have gaps or anything. Don't know how he does it, but it works very good.
===Sample Config===
Here is an sample config based on my actual config (it changes from time to time) looks the following. Again, if you have a dedicated GPU and always want best quality, ignore everything after line 8

Code: Select all

vo=gpu-next
hwdec=auto
screenshot-jpeg-quality=100
scale=ewa_lanczos4sharpest
dscale=ewa_lanczos4sharpest
hdr-compute-peak=yes
hdr-peak-percentile=99.995
hdr-contrast-recovery=0.30
[youtube]
profile-cond=path:find('youtube')
profile=fast
[fasthdr]
scale=bilinear
dscale=bilinear
dither=no
correct-downscaling=no
linear-downscaling=no
sigmoid-upscaling=no
hdr-compute-peak=no
hdr-peak-percentile=99.995
hdr-contrast-recovery=0.30
It uses the gpu-next Engine, automatically detects hardware decoding on the GPU, uses the highest quality scaling algorithm and the hdr settings i want. It also has 2 additional profiles (youtube, fasthdr) you can use as inspiration.

YouTube Videos use the (bultin) fast profile and the fasthdr is a combination of fast+hdr for my potato iGPU system.

Did i mention that mpv even runs on android and has full support for all options there?

If anyone is interested, i am willing to support as far as i can.