Log in

View Full Version : The best way of converting 60p to 30p?


scyrax
15th March 2011, 07:13
I've recently bought a blackmagic intensity shuttle to capture videoclips from ps3 & xbox360, and the format is 720p 60fps. But I want to convert the video framerate to 30fps for most portable device to play on, also I want to preserve the maximum motion smoothness that 60FPS provides. Obviously discard half of the frame would not work well, and Also I think that simply blend two frames into one would also not good for it produces ghost image but not real motion blur. So I am wondering if there is a plugin or software which uses advanced algorithms(such as motion estimation) to produce good motion blur result for converting 60p to 30p.
Any suggestion would be appriciated!:)

-Vit-
15th March 2011, 13:51
There is motion blur simulation for exactly this requirement in the QTGMC deinterlacing script (http://forum.doom9.org/showthread.php?t=156028). QTGMC can accept progressive input and you can switch off all the deinterlacing and just use the motion blur feature. That's the theory, I've only tested this once. Here's an example:

QTGMC( Preset="Fast", InputType=1, TR1=0, TR2=0, Rep0=0, Rep1=0, Rep2=0, SMode=0, SLMode=0, Sbb=0, NoiseProcess=0, \
ShutterBlur=1, ShutterAngleSrc=0, ShutterAngleOut=180, FPSDivisor=2 )


The Preset will select the quality of the motion estimation (e.g. "Slower", "Slow", "Medium" etc - read the QTGMC docs), the InputType=1 indicates progressive input and all the rest of the first line is switching off all the deinterlacing and other QTGMC features.
The second line has the motion blur settings - read the docs that come with QTGMC for details. As you're working with game footage that doesn't really have a shutter speed, you will need to guess the value for ShutterAngleSrc. Many games have little or no motion blur, so a lower value is appropriate, choose 0 if the input footage is completely sharp. ShutterAngleOut is usually best around 180, but experiment for the level you want - higher for more blur. FPSDivisor=2 means you want to divide the frame rate by 2 (60 -> 30) - do not add SelectEven() - QTGMC will do that.

2Bdecided
15th March 2011, 16:28
Also mflowblur...
http://avisynth.org.ru/mvtools/mvtools2.html
...then selecteven.

(haven't tried it myself - used mvtools and temporalsoften a few years ago, which similar).

Cheers,
David.

-Vit-
15th March 2011, 16:46
MFlowBlur is at the core of the QTGMC approach - carefully calculated motion vectors and some extra masking to limit the blur from "bleeding" into stationary areas

scyrax
15th March 2011, 17:12
There is motion blur simulation for exactly this requirement in the QTGMC deinterlacing script (http://forum.doom9.org/showthread.php?t=156028). QTGMC can accept progressive input and you can switch off all the deinterlacing and just use the motion blur feature. That's the theory, I've only tested this once. Here's an example:

QTGMC( Preset="Fast", InputType=1, TR1=0, TR2=0, Rep0=0, Rep1=0, Rep2=0, SMode=0, SLMode=0, Sbb=0, NoiseProcess=0, \
ShutterBlur=1, ShutterAngleSrc=0, ShutterAngleOut=180, FPSDivisor=2 )


The Preset will select the quality of the motion estimation (e.g. "Slower", "Slow", "Medium" etc - read the QTGMC docs), the InputType=1 indicates progressive input and all the rest of the first line is switching off all the deinterlacing and other QTGMC features.
The second line has the motion blur settings - read the docs that come with QTGMC for details. As you're working with game footage that doesn't really have a shutter speed, you will need to guess the value for ShutterAngleSrc. Many games have little or no motion blur, so a lower value is appropriate, choose 0 if the input footage is completely sharp. ShutterAngleOut is usually best around 180, but experiment for the level you want - higher for more blur. FPSDivisor=2 means you want to divide the frame rate by 2 (60 -> 30) - do not add SelectEven() - QTGMC will do that.

Thanks for the advise, this is very helpful. I've finally got desirable result by setting ShutterAngleOut = 300.
:thanks:

ps:I've also thought of a alternative method:
v1= source.Trim(0,99999).SelectEven()
v2= source.Trim(2,99999).SelectEven()
v0= source.SelectOdd()
c1 = overlay(v0,v1,mode="blend",opacity=0.3)
overlay(c1,v2,mode="blend",opacity=0.2)

this is faster but with minor ghost image.