Log in

View Full Version : 50 fps 1280x720p hdtv -> 720x576 25fps conversion advice


misled
11th July 2007, 14:01
Hi,

I'm pretty new to avisynth, but i think i've got the basics covered.

I'm wanting a good script/method of converting 1280x720p 50fps hdtv files to PAL dvd standard 720x576 25fps files to make dvd's.

My current process is:

dvb-t capture card -> .ts -> projectx to demux -> .m2v file -> avisynth for resizing... this is where i am unsure. the script i use is below...


LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DGDecode.dll")
Loadplugin("C:\Program Files\AviSynth 2.5\plugins\FDecimate.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\BT709ToBT601.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\UnDot.dll")
MPEG2Source("H:\TV_CAPS\03_-_CUT_M2V_+_AUDIO_FILES\02__HD_VIDS_TO_EDIT_+_BURN\foo_fighters_-_monkey_wrench_(unedited_HDTV).d2v",cpu=0)
FDecimate(rate=25.00,threshold=1.0)
LanczosResize(720,576)
BT709ToBT601()
UnDot()


I ahve tested this script and it does work ok. audio/video is synced and everything seesm ok. but i just want to know if the fdecimate filter is the correct one to use for this job?

Also, if the source is progressive, then no deinterlacing is required right ? And the final mpeg file should also stay progressive ? (i.e. 720x576i 25 fps) ?

Basically i want a high quality/most accurate encoding process.

Thx in advance.

Gav

Guest
11th July 2007, 14:37
Welcome to the forum.

But please read the forum rules. Asking for the "best" anything is prohibitied and so I have edited your post to correct that violation.

FDecimate is a reasonable choice here, though a simple SelectEven() might be fine too and a little faster.

Yes, if the source is progressive no deinterlacing is required and your encode should be progressive.

Dark Shikari
11th July 2007, 20:37
With a downsize like that a ReduceBy2() might look better. Lanczos is more effective for upsizing than downsizing.

misled
12th July 2007, 11:20
thanks for the quick feedback guys. I will test the options given here to see if there's a difference.

scharfis_brain
13th July 2007, 09:57
I'd suggest 704x576 pixels instead of 720x576.
also leave out undot() it distorts the image too much

further you may want to re-interlace that video to 50i, so you can preserve full motion smoothness.

This will work this way:

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DGDecode.dll")

MPEG2Source("H:\TV_CAPS\03_-_CUT_M2V_+_AUDIO_FILES\02__HD_VIDS_TO_EDIT_+_BURN\foo_fighters_-_monkey_wrench_(unedited_HDTV).d2v",cpu=0)
ConvertToYUY2() #remove ConvertToYUY2(), if your encoder only accepts YV12
LanczosResize(704,576)
BT709ToBT601()
Assumetff().SeparateFields().SelectEvery(4, 0, 3).Weave() #Reinterlace 50p to 50i (25fps)

misled
14th July 2007, 16:05
I'd suggest 704x576 pixels instead of 720x576.
also leave out undot() it distorts the image too much

further you may want to re-interlace that video to 50i, so you can preserve full motion smoothness.

This will work this way:

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DGDecode.dll")

MPEG2Source("H:\TV_CAPS\03_-_CUT_M2V_+_AUDIO_FILES\02__HD_VIDS_TO_EDIT_+_BURN\foo_fighters_-_monkey_wrench_(unedited_HDTV).d2v",cpu=0)
ConvertToYUY2() #remove ConvertToYUY2(), if your encoder only accepts YV12
LanczosResize(720,576)
BT709ToBT601()
Assumetff().SeparateFields().SelectEvery(4, 0, 3).Weave() #Reinterlace 50p to 50i (25fps)



thanks for you're input on this one :)
i was hoping that if you have time... i don't quite understand the "SelectEvery(4, 0, 3)." part of the script. What exactly does this do ?

Also may i ask the reason for the further size reduction (704x576) ? ... I am keen to learn as much as possible about encoding, any info you could share is greatly appreciated.

Many thx again

ChiDragon
15th July 2007, 05:21
Out of every four of the frames input into it (the half-frames created by SeparateFields), it selects only two of them to output: the first and the fourth. Since it's operating on the fields with AssumeTFF, it's choosing the top lines of frame 0, the bottom lines of frame 1, the tops of frame 2, bottoms of frame 3, etc.

The script goes from 50 fps -> 100 half-fps -> 50 half-fps -> 25 interlaced-fps. If you bobbed the video again you would get an interpolation/approximation of your original 50 fps stream.