View Full Version : 16p and 18p to DVD
frubsen
3rd July 2020, 15:42
Hey all
I'm just trying to figure out the best way to convert film frame rates of 16p and 18p to a DVD.
I have been using the simple avisynth script of:
ChangeFPS(59.94)
separatefields()
Selectevery(4,0,3)
weave()
It seems to produce decent results, but I've read about encoding at the native frame rate and then using DGpulldown to add a soft pulldown. My issue is, is there an MPEG2 encoder out there that will natively encode at 16fps or 18fps? And then does DGpulldown allow a pulldown from 16 or 18 to 29.97?
manolito
3rd July 2020, 16:01
DGPulldown won't help you here. From the manual:
The input frame rate can be freely chosen, but it must be greater than or equal to 2/3 of the output frame rate, and less than or equal to the output frame rate.
For an output rate of 29.97 this means that the input fps cannot be lower than 19.98 fps.
Your method will work (as long as you can live with the motion judder). Just keep in mind that the output will be interlaced, so your encoder needs interlaced parameters.
Another method would be to use frame interpolation. FrameRateConverter by MysteryX is about the best free option, and the quality is quite good. But beware of some typical interpolation artifacts (depending on the source characteristics).
johnmeyer
3rd July 2020, 16:26
Your code is correct. If you find that the field order is wrong, use selectevery(4,1,2) instead.
You want to be searching for DGPulldown, not DGIndex. DGPulldown works by adding pulldown flags that are different than the normal 23.976 to 29.97 film to video conversion flags that let 24 fps film material be encoded natively on a DVD, but then played on a CRT that was hard-wired to only play 29.97 fps material.
The problem, however, is that the DGPulldown "trick" only works with 19.98 fps material and above. It cannot let you directly encode 16 fps and 18 fps silent film at native rate, but have it play at 29.97.
Years ago, before I discovered the ChangeFPS approach, I developed my own pulldown patterns. I encoded a LOT of 18 fps material using this script:
# Pulldown for 18 fps using all weaves normal-weave-normal-weave-normal (I like this the best)
separatefields()
selectEvery(6, 0,1, 0,3, 2,3, 2,5, 4,5)
scharfis_brain
3rd July 2020, 17:32
DGPulldown won't help you here. From the manual:
For an output rate of 29.97 this means that the input fps cannot be lower than 19.98 fps.
Just create a PAL-DVD. Thus you'll end up with a Framerate as low as 16 2/3 fps.
I used it before. It works great, even though Pulldown hasn't been mentioned in the DVD standard for PAL. (But it is not forbidden, too. ;-) )
johnmeyer
3rd July 2020, 18:46
Just create a PAL-DVD. Thus you'll end up with a Framerate as low as 16 2/3 fps.
I used it before. It works great, even though Pulldown hasn't been mentioned in the DVD standard for PAL. (But it is not forbidden, too. ;-) )I never thought of that because, here in the states, most older DVD players don't play PAL discs. However, some newer ones do, and your suggestion would be a very good way to achieve the OP's goal if he has a player that handles PAL.
manono
4th July 2020, 00:11
I'd interpolate to 19.98fps, encode for DVD and then run DGPulldown on that.
My issue is, is there an MPEG2 encoder out there that will natively encode at 16fps or 18fps? And then does DGpulldown allow a pulldown from 16 or 18 to 29.97?
The answers to your questions are 'no' and 'no'. You encode to 23.976fps (adding an "AssumeFPS(23.976)" line to your script) and then fix it during the pulldown stage. Using DGPulldown with the custom box checked and 19.98->29.97 chosen will fix the length/framerate.
Also, you'll want to jack up the bitrates for the encoding by a factor of 23.976/19.98, min and max and average bitrates.
I would never encode as interlaced because of the huge quality hit you'll take for interlaced 29.97fps material as compared to encoding progressive 23.976fps.
johnmeyer
4th July 2020, 02:58
FWIW, I have created hundreds of DVDs from 12, 15, 16, and 18 fps material. I strongly advise against using any sort of motion interpolation. The reason for this is that not only does motion interpolation sometimes create really awful artifacts, but because of the huge temporal gap between frames in low fps amateur silent film, those artifacts are far more frequent and far more severe than what you would get with higher frame rate material.
I live in NTSC land. I tried pretty much every option proposed in this thread, but always came back to simply adding the pulldown fields using the code in post #1. You get no weird artifacts. Having said that, low frame rate material is going to judder like crazy during horizontal pans, and that judder is going to be accentuated by the pulldown fields.
When that judder gets to be too much to stand, I have occasionally encoded some of the material using motion interpolation and the rest using pulldown and then joined them using Womble's MPEG-VCR or VideoRedo, both of which let you join MPEG-2 files without re-encoding.
manono
4th July 2020, 03:37
Then blend to create the new frames. I use the Motion.dll for that. I repeat, encoding interlacing at 29.97fps absolutely kills quality relative to encoding progressive 23.976fps with soft pulldown.
FWIW, I have created hundreds of DVDs from 12, 15, 16, and 18 fps material.
12 and 15 are easy. Just double the framerates. And I've created dozens of DVDs from silent films at all kinds of framerates from 16 to 20 originally. Not to mention all the ones at higher framerates.
frubsen
4th July 2020, 19:07
Your code is correct. If you find that the field order is wrong, use selectevery(4,1,2) instead.
You want to be searching for DGPulldown, not DGIndex. DGPulldown works by adding pulldown flags that are different than the normal 23.976 to 29.97 film to video conversion flags that let 24 fps film material be encoded natively on a DVD, but then played on a CRT that was hard-wired to only play 29.97 fps material.
The problem, however, is that the DGPulldown "trick" only works with 19.98 fps material and above. It cannot let you directly encode 16 fps and 18 fps silent film at native rate, but have it play at 29.97.
Years ago, before I discovered the ChangeFPS approach, I developed my own pulldown patterns. I encoded a LOT of 18 fps material using this script:
# Pulldown for 18 fps using all weaves normal-weave-normal-weave-normal (I like this the best)
separatefields()
selectEvery(6, 0,1, 0,3, 2,3, 2,5, 4,5)
Any reason you would use that over the standard selectevery(4,0,3).
Less judder?
frubsen
4th July 2020, 19:09
Then blend to create the new frames. I use the Motion.dll for that. I repeat, encoding interlacing at 29.97fps absolutely kills quality relative to encoding progressive 23.976fps with soft pulldown.
12 and 15 are easy. Just double the framerates. And I've created dozens of DVDs from silent films at all kinds of framerates from 16 to 20 originally. Not to mention all the ones at higher framerates.
I'm pretty much only dealing with 16 or 18fps reels.
Any suggested blend script for the interpolation to 19.98? I'm curious to give that route a try and see the results
manono
4th July 2020, 19:46
Any suggested blend script for the interpolation to 19.98? I'm curious to give that route a try and see the results
BlendFPS(19.98,0.5)
That works for 16fps. For 18fps I seemed to get the best results with an aperture of 0.15:
BlendFPS(19.98,0.15)
The idea is to get a blended frame after every 4 'good' frames at 16fps and after every 9 'good' frames at 18fps. Not more blends and not duplicate frames. You might have to play with the apertures. I'll include the Motion.dll and the doc:
johnmeyer
5th July 2020, 01:29
Any reason you would use that over the standard selectevery(4,0,3).
Less judder?Possibly, but probably not.
With really low-framerate material, you have several ways you can create pulldown. I did experiment with all of them, back when I first started doing this 20+ years ago. Unfortunately, I didn't put the notes in my engineering notebook so I don't remember if there was any significant differences. The code you posted works automatically with any frame rate and, as I remember, it does properly use repeated fields, rather than repeated frames, something that is required if you want to make the result play as smoothly as possible.
You should probably just keep using your script, although I can post the other patterns if you want, and you can put 30 seconds of the same material on a DVD (use fast motion!), using each of the different pulldown patterns and see if you can detect any differences.
The other Selectevery option I posted can be useful if you want to use TFF instead of BFF. Remember that, even though your source material is progressive, the whole point of pulldown is to let you play that progressive material on a 29.97 interlaced display.
These days, depending on what you are really trying to do, I would advise considering not doing pulldown at all, but instead simply encode the 12, 15, 16, 18, or 24 fps material and then play that directly on your set. All modern TVs are very happy playing any fps video you can throw at them. Of course you can't do this on a traditional video DVD, but you can save the results on a data DVD.
frubsen
5th July 2020, 14:39
BlendFPS(19.98,0.5)
That works for 16fps. For 18fps I seemed to get the best results with an aperture of 0.15:
BlendFPS(19.98,0.15)
The idea is to get a blended frame after every 4 'good' frames at 16fps and after every 9 'good' frames at 18fps. Not more blends and not duplicate frames. You might have to play with the apertures. I'll include the Motion.dll and the doc:
Great thanks, will play around with this!
frubsen
5th July 2020, 14:48
These days, depending on what you are really trying to do, I would advise considering not doing pulldown at all, but instead simply encode the 12, 15, 16, 18, or 24 fps material and then play that directly on your set. All modern TVs are very happy playing any fps video you can throw at them. Of course you can't do this on a traditional video DVD, but you can save the results on a data DVD.
I always push people to go the file route when I scan film for them. Most of the time people are happy with an MP4 file which I can provide at the native frame rate. However some people insist on DVD copies so I'm just trying to figure out the best method.
johnmeyer
5th July 2020, 15:52
I always push people to go the file route when I scan film for them. Most of the time people are happy with an MP4 file which I can provide at the native frame rate. However some people insist on DVD copies so I'm just trying to figure out the best method.Yes, I still sell almost as many DVDs as I do HD versions on thumb drive, when I produce "The Nutcracker" production each year.
One great advantage of DVD is that it likely has the best longevity of any media on which you could deliver your transfers. So I fully understand why you are going this route.
Ghitulescu
7th July 2020, 20:32
I remember it was a nice thread about 8mm and Super8 dealing exactly with these things.
Cary Knoop
8th July 2020, 00:01
So I fully understand why you are going this route.
I don't, but that seems to be subject to censorship over here.
manono
9th July 2020, 00:59
I don't, but that seems to be subject to censorship over here.
Geez, again? That question was already asked and answered. You don't have to agree with frubsen's reasoning, although I do.
And I had nothing to do with removing those off-topic posts. A different stealth mod must have done it.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.