To reach the smootest playback possible, it is necessary the monitor refresh rate to be an integer multiple of the content one.
For 23.976 fps movie, the panel needs to be refreshed at 23.976hz or 47.952, 71.928 and so on...
A 24 fps movie requires 24hz or 48hz or 72hz and so on
A 25fps movie will be smooth on 25hz,50hz,100hz
A 30fps movie needs 30hz,60hz,90hz
Nothing stops you from changing the monitor resolution/refresh rate to match an integer multiple of the movie one, but unfortunately most HDTVs (my panasonic l42d25e do that) aren't that flexible; for example they support 24p playback only at 24hz, and not 48 or 72.
This means that the player has to be incredible stable and output every single frame at right time, if it slow down for whatever reason (a process in background...) it will need to speed-up the video to mantain audio/video sync.
On a sane enviroment (24p input, 48hz output), it would renders and display the frames quicker for a while, speeding up the video, but if the output has the same refresh of the input (24p on 24hz), this will be a problem, requiring it to totally discard some frames, rather than display them quicker.
On mplayer the -framedrop option will do that, but sometimes this will lead the video to stop or pause for a while; yeah, it works better in mplayer2, but i am still not 100% satisifed.
If your panel gives you a 48 or 72hz modeline, stop right there and use it for 24p movies, you're lucky; else read on...
Fortunately, almost all of the panels supports 50hz inputs for Pal contents; the idea is to speed up 24p contents to 25p and then display it on 50Hz panels.
Two mplayer options comes to help; they are -af scaletempo and -speed
The option speed [factor] allows to change the audio and video playback speed together
The audio filter scaletempo allows to mantain the audio pitch when the speed changes.
So, if you have a 23,976 fps movie and a 50hz display, we have to speedup the video from 23.976 to 25,
- Code: Select all
mplayer 23976movie.mkv -speed 1.0427094 -af scaletempo
Do that and you'll have a perfectly smooth playback of your 24p movie on a 50hz display!
The same thinking is valid to other values too, of course.
A note for the ones who use AC3 or DTS passthorough:
-speed option is not compatible with that as the audio can't passthrough anymore because it has been modified.
Still, you can make an ac3 and feed it to the decoder right within mplayer this way:
- Code: Select all
mplayer 23976movie.mkv -speed 1.0427094 -af scaletempo,lavcac3enc=1:640 -channels 6
The audio filter lavcac3 will encode all the audio data to a 640kbps ac3 stream and will send it to your hifi decoder via spdif
Final tweak: Add -framedrop to the options anyway, it seems it still helps, but in very rare cases; you won't notice it.