我正在使用FFmpeg对短的gifs和视频应用速度效果,并且我注意到当速度加快时,在循环gifs上出现奇怪的口吃现象。我手动测试并发现了发生了什么。FFmpeg未能将速度过滤器应用于视频的前几帧。
我从这个文件开始,它在每个帧的数字“1234”之间循环。
然后运行命令ffmpeg -i 123410fps.mp4 -vf setpts=0.5*PTS 123410fpsout.mp4
给我留下了这个文件:123410fpsout.mp4
经过仔细分析,我发现输出文件没有显示重复的1 3 1 3
或2 4 2 4
模式,而是显示了1 2 3 4 1 3 1 3 1 3...
--速度效应没有应用于前几帧
我很抱歉,如果听起来我太挑剔了,但我的用法是在非常短的礼物和视频中,这种效果是非常明显的。如何防止这种效果的发生,并将100%一致的速度效果应用到视频中?,我不介意使用其他非ffmpeg软件,但是对于大多数视频来说,一个易于工作的解决方案是理想的。
如果有人想知道,我不使用ffmpeg来编码gifs,我使用来自ffmpeg导出的图像序列的吉夫斯基。即使没有使用gifs,这个问题也会出现,所以它不是一个gifski问题。
发布于 2021-01-15 04:01:13
在fps
过滤器之后添加一个setpts
过滤器,并使用-t
选项如下:
ffmpeg -i 123410fps.mp4 -vf 'setpts=0.5*PTS,fps=10' -t 1.64 -an 123410fpsout.mp4
10
是123410fps.mp4
视频的fps,1.64
是它持续时间的一半(秒)。
文献资料说fps
过滤器是这样的:
根据需要复制或删除帧,将视频转换为指定的固定帧速率。
这个过滤器的使用似乎迫使帧的正确删除。
更改帧速率页 of FFmpeg wiki描述了如何使用fps
过滤器,但也指出:
视频的输出持续时间将保持不变。
-t
选项是获得输入持续时间的一半的输出所必需的,这与2倍的速度是一致的。
fps
过滤器还有一个round
参数,在这种情况下,它允许您获得一个数字为1,3,1,……的输出。或者2,4,2,.
1,3,1,.您可以使用fps=fps=10:round=up
。
2,4,2,您可以使用fps=fps=10:round=down
。
https://stackoverflow.com/questions/65728616
复制相似问题