On 21-07-2018 04:12 PM, John Allan Farleyton wrote:
Hi,
I am trying to slow down a video to half speed beginning from frame 100
with the setpts filter. It works, but from frame 100 I get 100 additional
frozen dropped frames before the video continues at half speed. Is my
command wrong or is there a problem with the setpts filter?

Command:
ffmpeg -i ball.avi -vf "setpts='if(gte(N,100),2,1)'*PTS" -c:v libx264 -crf
20 -pix_fmt yuv420p ball_slow.avi


Since your video has a timescale of 30 tbn, equal to the framerate, we can treat each frame's PTS to be equal to its N index.

So, as your expression,

frame  99 will have PTS 99  = 99/30 = 3.33s and
frame 100 will have PTS 200 = 200/30 = 6.67s;
101 will have 6.73s.

That's because PTS of frames N >= 100 can be thought to be comprised of both an interval from the previous frame as well the common offset from the start of the whole stream. For double speed, you only need to double the inter-frame interval.

So, use instead,

setpts='if(eq(N,0),0,PREV_OUTPTS+if(gte(N,100),2,1)*(PTS-PREV_INPTS))'


Gyan
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to