gpt4 book ai didi

video - 如何让 FFmpeg 始终将速度效果应用于前几帧?

转载 作者:行者123 更新时间:2023-12-04 23:11:45 25 4
gpt4 key购买 nike

我正在使用 FFmpeg 将速度效果应用于短 gif 和视频,我注意到加速时循环 gif 出现奇怪的口吃。我手动测试并发现发生了什么。 FFmpeg 未能将速度过滤器应用于视频的前几帧。
我从这个文件开始,它在每帧的数字“1 2 3 4”之间循环。
123410fps.mp4
然后我运行命令 ffmpeg -i 123410fps.mp4 -vf setpts=0.5*PTS 123410fpsout.mp4这给我留下了这个文件:123410fpsout.mp4
经过仔分割析,我发现输出文件没有显示重复的 1 3 1 32 4 2 4模式,但显示 1 2 3 4 1 3 1 3 1 3...速度效应前几帧没申请
如果听起来我很挑剔,我深表歉意,但我的用法是在非常短的 gif 和视频上,这种效果非常明显。 如何防止这种效果发生并为视频应用 100% 一致的速度效果? 我不介意使用其他非 ffmpeg 软件,但对大多数视频都适用的 CLI 解决方案是理想的。
如果有人想知道,我不使用 ffmpeg 编码 gif,我使用 gifski从 ffmpeg 导出的图像序列。即使不使用 gif 也会出现此问题,因此这不是 gifski 问题。

最佳答案

添加 fpssetpts 之后过滤过滤并使用 -t像这样的选项:

ffmpeg -i 123410fps.mp4 -vf 'setpts=0.5*PTS,fps=10' -t 1.64 -an 123410fpsout.mp4
10是您的 123410fps.mp4 的 fps视频和 1.64是其持续时间的一半,以秒为单位。
The documentation说这个关于 fps筛选:

Convert the video to specified constant frame rate by duplicating or dropping frames as necessary.


似乎使用此过滤器会强制正确丢弃帧。
Changing the frame rate page FFmpeg wiki 描述了如何使用 fps过滤器,但也这样说:

The output duration of the video will stay the same.

-t选项是获得输入持续时间一半的输出所必需的,这与 2x 的加速是一致的。 fps过滤器还有一个 round在这种特殊情况下,允许您获得数字为 1,3,1,... 或 2,4,2,... 的输出的参数
对于 1,3,1,...,您可以使用 fps=fps=10:round=up .
对于 2,4,2,...,您可以使用 fps=fps=10:round=down .

关于video - 如何让 FFmpeg 始终将速度效果应用于前几帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65728616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com