mpv-player / mpv

🎥 Command line video player
https://mpv.io
Other
27.71k stars 2.86k forks source link

Judders(?) in panning scenes #11302

Closed Saleh7Hamad closed 1 year ago

Saleh7Hamad commented 1 year ago

I want to run SVP 3 on MPV and I think it requires ffdshow, as I use SVP 3 because its free unlike SVP 4. So Is it possible to make MPV run ffdshow and Avisynth+ and vapoursynth combined to run SVP 3?

Or is there actual methods to to fix judders while panning scenes that appear on my 144hz monitor

If any of these are possible please anyone tell me how, and thanks.

hooke007 commented 1 year ago

make MPV run ffdshow

Impossible。

fix judders

https://mpv.io/manual/master/#options-interpolation

qyot27 commented 1 year ago

https://gist.github.com/phiresky/4bfcfbbd05b3c2ed8645

Saleh7Hamad commented 1 year ago

@hooke007

https://mpv.io/manual/master/#options-interpolation

I've tried interpolation with many settings but juddering gets blurier but never disappears unlike how SVP does the job on Potplayer or MPC-HC that the judder effect literally disappears and the video becomes clear I'm still searching for better settings but I still don't a have clue

Saleh7Hamad commented 1 year ago

@qyot27

https://gist.github.com/phiresky/4bfcfbbd05b3c2ed8645

Thanks but this doesn't seem to be for Windows specifically, and seem to be really complicated Do you have any clean VapourSynth guide for Windows?

Jules-A commented 1 year ago

https://gist.github.com/phiresky/4bfcfbbd05b3c2ed8645

I tried that but for some reason I couldn't get it working, MPV just wouldn't launch if I enable by default and it did nothing as input command. I'm using Shinchiro builds so it should have Vaporsynth??

hooke007 commented 1 year ago

unlike how SVP does the job

memc is another thing which is totally different with the interpolation in mpv.

I'm using Shinchiro builds so it should have Vaporsynth??

vs should be installed by users. https://github.com/shinchiro/mpv-winbuild-cmake/wiki/Setup-vapoursynth-for-mpv BTW, that vs script is broken. It doesn't work with the latest vs because it used outdated syntax.

Jules-A commented 1 year ago

Oh, no wonder...

Saleh7Hamad commented 1 year ago

vs should be installed by users. https://github.com/shinchiro/mpv-winbuild-cmake/wiki/Setup-vapoursynth-for-mpv

I've done as the guide above, I also downloaded this vapoursynth script and downloaded the latest Mvtools

hooke007 commented 1 year ago

get MPV to use vapoursynth and make sure I have no issues

Check console's info.

get MPV to use the scripts

https://mpv.io/manual/master/#video-filters-vapoursynth

Traneptora commented 1 year ago

Did you try --video-sync=display-resample --tscale=mitchell --interpolation=yes?

Jules-A commented 1 year ago

Did you try --video-sync=display-resample --tscale=mitchell --interpolation=yes?

I'm using those settings currently and it doesn't get rid of judder but it is better than nothing. Previously I used AMD's Fluid Motion in MPC-HC and MPVs inbuilt solution doesn't come close.

Saleh7Hamad commented 1 year ago

it doesn't get rid of judder but it is better than nothing. MPVs inbuilt solution doesn't come close.

True. and btw SVP 3 with Potplayer or MPC are good options to fix judder since MPV doesn't support SVP 3

Jules-A commented 1 year ago

True. and btw SVP 3 with Potplayer or MPC are good options to fix judder since MPV doesn't support SVP 3

They don't support Anime4k shaders so going back to those players is not even an option for me (I still use them for non-Anime content, but that's rare since I normally watch that stuff on TV rather than my PC). The benefit of Anime4k shaders far outweigh the annoyance of judder but if I can reduce it I could use it for other content. I haven't managed to get that vaporsynth script working yet though so no idea how effective it is.

Saleh7Hamad commented 1 year ago

They don't support Anime4k shaders so going back to those players is not even an option for me

You really should consider using madvr, its really a good replacement for mpv's qualities

Jules-A commented 1 year ago

You really should consider using madvr, its really a good replacement for mpv's qualities

I do and for Anime, it just doesn't come anywhere near close to a good setup of Anime4k shaders (I'm using a mix of old and new with tweaks to a few parameters that are better than the default presets). Either way it's off-topic, I need to use MPV and there's no getting around that so I need a solution to fix the judder.

philipl commented 1 year ago

What is the judder? 24fps content should naturally show correctly on a 144hz display (6x). You shouldn't need any interpolation.

Jules-A commented 1 year ago

What is the judder? 24fps content should naturally show correctly on a 144hz display (6x). You shouldn't need any interpolation.

I don't have 144hz like OP (I have 75hz and things get pretty nasty) but most of my content is 23.976fps, would it still go naturally into 144hz? (sorry if it's a stupid question).

philipl commented 1 year ago

Yes, it would. 23.976 * 6 == 143.856. That's well close enough, and mpv interpolation wouldn't even kick in for that difference. So yeah, with a modern high refresh rate monitor, you'll be running at a multiple of 24fps anyway, and you'll have VRR (Gsync/Freesync) so fullscreen content should be displayed correctly anyway.

philipl commented 1 year ago

In your case, you could create a custom modeline for your display to run at 72Hz and I would expect it to work fine.

Jules-A commented 1 year ago

In your case, you could create a custom modeline for your display to run at 72Hz and I would expect it to work fine.

It's definitely a lot better at 72hz but there's still quite a lot of judder in panning shots. Also I have no idea how to change to 72hz automatically (doing it manually every time is not nice) and I often have many other things open at the same time like emulators that might not like the change in display hz.

Saleh7Hamad commented 1 year ago

Yes, it would. 23.976 * 6 == 143.856. That's well close enough, and mpv interpolation wouldn't even kick in for that difference. So yeah, with a modern high refresh rate monitor, you'll be running at a multiple of 24fps anyway, and you'll have VRR (Gsync/Freesync) so fullscreen content should be displayed correctly anyway.

i wish things worked as you suggest theoretically.. I Have AOC 24g2 and it supports gsync, and I tried limiting fps in mpv to 143.856 and even made a custom resolution of 143.856Hz but none of that really fixed it, and I tried some tweaks with gsync and I have no clue about it. though the monitor doesn't support any resolution under 48Hz. Please tell us any info or any help you can do about it.

Traneptora commented 1 year ago

You keep saying "judder" but I don't think that's what you mean, as there's no judder when 24 fps is displayed on 72 Hz.

Judder is when you have non-uniform stuttering in the video that's caused by frames being displayed at inexact timings. For example if you play 24 fps on 60 Hz without interpolation, you can get judder as there's no way to refresh the frames timed exactly for the content.

Also 23.976 is equivalent to 24 for these purposes, because mpv will actually render it at 24 fps instead and adjust the audio very slightly to compensate so they stay lined up. The difference is 0.1% so you won't notice it at all.

Jules-A commented 1 year ago

You keep saying "judder" but I don't think that's what you mean, as there's no judder when 24 fps is displayed on 72 Hz.

Hmm... maybe it's not then, this is what it looks like: https://www.youtube.com/watch?v=T_dFjtOVUvc

hooke007 commented 1 year ago

But your recording is 60fps.

Saleh7Hamad commented 1 year ago

For trying to explain what I see; the actual scene in the anime of the video he sent shows flickering/flashing and shaking back and forth and ghosting of still objects and all of this happen when the scene is panning while there are still objects, and that's on my 144Hz monitor that doesn't support 24hz and on the other hand, the video looks perfect on the galaxy S10 smartphone I really tried to make example footage of this issue but they aren't appearing on the videos I shot using the camera

Many people online doesn't seem to understand the issue unless actually witnessing it irl, but many may call it judder, but myself the motion itself is smooth BUT there's an after effect on still objects in panning scenes, like halos of the objects and it depends on the speed of the pan and its direction, and sometimes they aren't that apparent but they are definitely there. though I hope you guys got the idea

Jules-A commented 1 year ago

But your recording is 60fps.

Should I have recorded at 24 or 48fps? (I don't know sites that support 72) I'm not sure since 24 would miss frames and I'm not sure how 48 would look like once uploaded to Youtube. Either way the video looks basically the same as what I'm seeing with my eyes so it should be good enough to see what I'm talking about.

shows flickering/flashing

Huh? I've never seen anything like that... That seems more like it would be an issue with shaders or other settings?

Saleh7Hamad commented 1 year ago

Huh? I've never seen anything like that... That seems more like it would be an issue with shaders or other settings?

Maybe I exaggerated a little bit there but I meant that the still objects like the characters are looking kinda shaky back and forth when the scene is panning and that happens when certain pans happen in any 24fps content on my monitor and whatever the video player is, unless I use SVP which uses Frames Interpolation to fix it, and it does it nicely.

philipl commented 1 year ago

It's important to remember that 24fps is a low FPS. You don't get smooth pans, even if your FPS and Hz are nice integer multiples. Your eyes will pick up the jump between frames. You might call this judder but it isn't judder - judder is uneven motion due to having inconsistent frame times due to the frame rate not matching the display.

In the case where you have a correct integer multiple set up, you also need to have accurate expectations of what 24fps will look like. If you're trying to compare accurate 24fps to full frame generation based interpolation going from 24 -> 144, you're results will be radically different.

Anyway - it's unclear if there is actually a problem here in the cases where you're ensuring an integer multiple.

Saleh7Hamad commented 1 year ago

If you're trying to compare accurate 24fps to full frame generation based interpolation going from 24 -> 144, you're results will be radically different

My comparing reference here is how good any 24fps panning scene looks on the galaxy s10 compared to how weird it looks on my monitor (without svp, and with svp it looks identical to the s10), and I've asked other people about how a certain anime scene look on their TV and they said its good and there isn't any problem (Deaimon ep1 on the first 10 seconds. happens whatever the source is, but it doesn't happen on my s10 nor on their 4k tv) Although I myself don't know if this issue happens on all monitors or not, since I don't remember noticing it until I've bought the 144hz monitor. but I've read many people talk about it on the internet and explain it the same way I see it.

Saleh7Hamad commented 1 year ago

I made videos that kinda gets the point of how the edges of the still objects look like in panning shots https://www.youtube.com/watch?v=K8GgTv4RgKE https://www.youtube.com/shorts/wPzSnbt_4SU Maybe it'd help to figure out what's this issue is

Hrxn commented 1 year ago

[..] You might call this judder but it isn't judder - judder is uneven motion due to having inconsistent frame times due to the frame rate not matching the display.

I mean, while technically correct, in many places the small but noticeable hiccups in motion visible during a panning shot on film or film-like (i.e. ~ 24fps) material is still called motion judder, or just judder.

This is not a standardization committee, so I don't think that pontificating about the proper terminology is very useful here.

Anyway, the fundamental issue is that, in short, 24fps is simply not enough information for any scene involving "complicated" motion, like a camera pan.

The only way around this, and that is what your usual modern smartphone (as well as tablets, real TVs (like living-room TV), or projectors) is doing internally, is using motion interpolation.

To my knowledge, there is no computer monitor that does this internally.

So, you have to use something like SVP, or use this linked guide in the gist above for using mpv + VapourSynth + mvtools (SVP is based on that). It shouldn't be too complicated, although it seems that linked vapoursynth script is outdated.. But this should be relatively straightforward to fix..

Edit

https://vapoursynth.com/doc/installation.html#basic-program

For testing, may be easier to use Python portable + VapourSynth portable.

soredake commented 1 year ago

I use this to fix this judder:

[LFR]
profile-desc=Fix jitter on panning shots in lfr videos
profile-cond=p["estimated-vf-fps"] <50
profile-restore=copy
video-sync=display-resample
hooke007 commented 1 year ago

I use this to fix this judder:

Isn't it we were talking about?

Hrxn commented 1 year ago

I use this to fix this judder:

[LFR]
profile-desc=Fix jitter on panning shots in lfr videos
profile-cond=p["estimated-vf-fps"] <50
profile-restore=copy
video-sync=display-resample

This improves the situation somewhat, but this is still not comparable to real motion interpolation / motion compensation.

hooke007 commented 1 year ago

--display-resample without --interpolation means it just simply replicates the old frames. If someone is not satisfied with --interpolation's effect. You profile is worse to them.

andyzukunft commented 1 year ago

I actually have this issue for quiet a while (an created an issue here) and so far haven't found a satisfying solution. A couple days ago I started watching a few animes again and ... well. It's a problem for basically all 23.97x fps videos however it is especially easy to notice with animes.

Can you guys confirm that your problems look likes this: https://drive.google.com/drive/folders/1FdRWZKdzFX_cztwKKqjZSbAbSLRkEA2Y ?

In my opinion the interpolation might not be activated. At least I don't see any difference trying to play without interpolation or with interpolation and different tscale algorithms (overscan, triangle, catmull_rom, mitchell).

Is there any option to enable write information to the overlay to ensure that video-sync, interpolation and other features relevant to this are actually activated?

Jules-A commented 1 year ago

Is there any option to enable write information to the overlay to ensure that video-sync, interpolation and other features relevant to this are actually activated?

https://i.imgur.com/LLx2zqa.png

Shift+i, then press 2.

andyzukunft commented 1 year ago

There was no interpolation with my configuration I had to change the video output to make it work.

Sure it's not perfect but it is quiet the improvement. You helped me a lot!

Jules-A commented 1 year ago

Okay, so I finally found a fix... well sort of... I had to create a custom resolution of 71.928. I did try that before but I thought it was just being set to 71 because that's what windows and MPV both report. I had to also set override-display-fps=71.928 in mpv.conf otherwise MPV will just try to do 71.0... (so this is an MPV issue but maybe need to create a new issue?). https://i.imgur.com/p6Uorsf.png BlurBusters website is showing 71.927: https://i.imgur.com/9zAPvvo.png

Why it's not a proper fix is because for 29.970 content or anything else I have to change my refresh rate in Windows AND remove the over-ride fps. Going to look into creating an autoprofile for it but not sure if that's even possible or how to do it.

EDIT:

[displayfps]
profile-cond=container_fps < 29
override-display-fps=71.928

Seems to work but apparently container_fps isn't great to use.