Convert60ito24p
I've made a script that converts 60i video to 24p avoiding jerkyness in motion using blending.
since I am a PAL - man I cannot test on a wide spectrum of NTSC - sources.
are there any volunteers, who can do tests with my script?
I think, especially mode 2 of this script could be useful on non decimatable animes...
Contents |
usage:
import(convert60ito24p.avs) loadplugin(your 60fps deinterlacer like dgbob or tomsbob) xxxsource("clip") your60fpsdeinterlacer() convert60ito24p(2,0)
mode - parameter:
0 uses simple 24 out of 60 selection -> jerky motion
Code:
.A B C D E F G H I J K L M N O P Q R <- input sequence
| | | | | | | <- | = direct copy 1 2 3 4 5 6 7 <- resulting output sequence
1 introduces a blending of every other frame from its nearest neighbors
Code:
.A B C D E F G H I J K L M N O P Q R <- input sequence
| \ / | \ / | \ / | <- | = direct copy ; \ / = 50:50 blending 1 2 3 4 5 6 7 <- resulting output sequence
this mode delivers a non-jerky motion and should be used with shutter speeds below 1/60sec! ie. 1/120 or shorter
2 uses blending on every frame like this:
Code:
.A B C D E F G H I J K L M N O P Q R <- input sequence
\|/ \ / \|/ \ / \|/ \ / \|/ <- \|/ = 25:50:25 blending ; \ / = 50:50 blending 1 2 3 4 5 6 7 <- resulting output sequence
mode 2 is ideal for shutter speed of 1/60 sec since it simulates very close the 24p (1/24sec) motion blur and thus giving a really smooth 24p - motion as a positive side-effect, this mode reduces noise and nearly comletely eliminates remained line flickering of the deinterlacing!
every other number given to mode delivers the the input directly to the output (60fps)
offset - parameter:
here you can apply a offset for selecting the 2 out of 5 frames - pattern.
function convert60ito24p(clip video, int mode, int offset) { work = assumefieldbased(video) out = (mode==3) ? interleave ( \ selectevery( \ overlay(trim(work, 1, 0), \ overlay(work, trim(work, 2, 0), mode="blend", opacity=0.5), \ mode="blend", opacity=0.5), 5, 0 + offset), \ selectevery( \ overlay( \ overlay(work, trim(work, 3, 0), mode="blend", opacity=0.5), \ overlay(trim(work, 2, 0), trim(work, 1, 0), mode="blend", opacity=0.5), \ level = 170), 5, 2 + offset)) : \ (mode==2) ? interleave( \ selectevery( \ overlay(trim(work, 1, 0), \ overlay(work, trim(work, 2, 0), mode="blend",opacity=0.5), \ mode="blend",opacity=0.5), 5, 0 + offset), \ selectevery( \ overlay(work, trim(work, 1, 0), mode="blend",opacity=0.5), 5, 3 + offset)) : \ (mode==1) ? interleave( \ selectevery(trim(work, 1, 0), 5, 0 + offset), \ selectevery(overlay(work, trim(work, 1, 0), mode="blend",opacity=0.5), 5, 3 + offset)) : \ (mode==0) ? selectevery(work, 5, 1 + offset, 4 + offset) : work assumeframebased(out) }
External Links
Back to External Filters ←