从其他视频创建延时视频

Create time lapse video from other video

使用 avconv(甚至 ffmpeg,所以我可以用作参考),如何通过仅从另一个视频中获取 anchor/reference 帧来创建延时视频?我找到的大多数信息都是关于如何通过组合图像来创建延时视频的,我想通过从视频中提取帧来实现。比如说,如果一个视频以 30 FPS 的速度长 30 秒,我想从这 900 帧中取出 60 帧(900/60 = 每 15 秒)来制作一个 2 秒的视频。

要每 15 帧拍摄一次,请使用

ffmpeg -i in.mp4 -vf select='not(mod(n,15))',setpts=N/FRAME_RATE/TB out.mp4

另一种方法是使用 framestep 过滤器

ffmpeg -i in.mp4 -vf framestep=15,setpts=N/FRAME_RATE/TB out.mp4

我有一个来自摄像机的 H264 视频,经过多次尝试后发现按照命令生成的视频速度提高了 16 倍,效果很好,60 FPS(选项 -r)非常适合 YouTube 延时拍摄

ffmpeg -i video.avi -r 60 -filter:v "setpts=0.0625*PTS" -vcodec libx264 -an timelapse.avi

你可以在这里查看结果https://www.youtube.com/watch?v=azhRqKQ7kCU

由于您要求的是 1/15 帧,因此 1/15 ~= 0.06667 和 30 FPS 结果视频您将需要命令

ffmpeg -i video.avi -r 30 -filter:v "setpts=0.06667*PTS" -vcodec libx264 -an timelapse.avi