View Full Version : using SelectEvery() to get desired fps
wiseant
24th August 2012, 06:57
Hi
Couldn't find the answer after searching how to use SelectEvery() to yield a 29.970 fps interlaced output clip
I get these framerate changes:
ffvideosource("D:\23.976fps")
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
#23.976 gives 29.970 fps - OK
ffvideosource("D:\24fps.mp4")
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
#24 gives 30 fps -
is it OK to convert/change/assume fps of 30 to 29.970?
ffvideosource("D:\25fps.mp4")
#25 gives 31.250
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
#25 gives 31.250 - not OK
What SelectEvery() will give me:
25 fps to 30.00 fps and ?29.970 fps
23.976 fps to ?30.00 fps
24 fps to ?29.970 fps
ajk
24th August 2012, 10:58
Generally you can AssumeFPS() those small changes like 24 vs 23.976 fps (use sync_audio = true as needed).
henryho_hk
24th August 2012, 11:17
Generally you can AssumeFPS() those small changes like 24 vs 23.976 fps (use sync_audio = true as needed).
After assumefps(.... , sync_audio=true), remember to use resampleaudio(....) to restore the original sampling rate.
Didée
24th August 2012, 11:19
What SelectEvery() will give me:
25 fps to 30.00 fps and ?29.970 fps
23.976 fps to ?30.00 fps
24 fps to ?29.970 fps
The easiest way is to not use SelectEvery. You can simply let ChangeFPS() make the calculation for you. :)
changefps( XX * 2 ) # XX = your destination framerate
separatefields()
selectevery(4,0,3)
weave()
Though, that is for progressive input only. (For interlaced input you'd first bob, then use XX*1.)
wiseant
24th August 2012, 21:37
Thanks
Now re
changefps( XX * 2 ) # XX = your destination framerate
separatefields()
selectevery(4,0,3)
weave()
Though, that is for progressive input only. (For interlaced input you'd first bob, then use XX*1.)
Since changefps doesn't have a sync_audio = true, do I just use resampleaudio(48000) if I'm doing DVD?
This is with respect to a video joiner I am working on:
if any video is 29.970/30 fps, then video with 23.976/24/25 will be converted using the above CODE.
Now, if there are no 29.970/30fps clips, just 23.976/24/25 fps, what procedure to convert them to a common progressive fps that will preserve video/audio sync?
Didée
25th August 2012, 01:05
With the suggested code, there is no need to adjust audio sync. The video runtime stays exactly the same. (If the involved framerates require so, you get one additional dup field, or one duplicated field less, per each 1000 frames.)
wiseant
25th August 2012, 11:47
Thanks Didée
works as you described
then i joined one of each: 23.976, 24, 25 fps using music videos, e.g.
Avisource("D:\join_1.avi").assumefps(24, sync_audio=true).resampleaudio(48000)
all audio/video in sync
one last question:
I want to convert 1280x720p [maybe 1920x1080p] 50/60 fps to 1920x1080i 25/30 fps "canvas"
using x264 --fake interlaced to encode [for BD]
this is for motion menu thumbnails: max/min resolution 384x216 / 192x108; max/min frames 30 / 1 [no audio]; max/min amount 12/2
How would you go about resizing and changing framerate[s] ?
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.