gpt4 book ai didi

video - 如何准确延长小视频剪辑的持续时间?

转载 作者:行者123 更新时间:2023-12-04 22:47:11 28 4
gpt4 key购买 nike

我注意到 ffmpeg 并不总是将剪辑的持续时间缩放到所需的值(甚至考虑到毫秒的精度损失。)例如,每当我尝试将这个微小的 67ms 剪辑的持续时间缩放到 7 秒时:

ffmpeg -i input.avi -filter:v "setpts=(7/0.067)*PTS" -an output.avi    

生成的视频持续时间仅为 3.5 秒。

不太确定为什么这会关闭几秒钟,但我怀疑它与输入剪辑本身有关(只有 2 帧 @ 29.97 fps)到目前为止,我发现如果我将持续时间缩放到很多首先较大的值,然后从该值缩小到 7 秒,它工作正常:
ffmpeg -i input.avi -filter:v "setpts=(1000)*PTS" -an input_scaled_high.avi
ffmpeg -i input_scaled_high.avi -filter:v "setpts=(7/33.400033)*PTS" -an output.avi

但我希望我不需要求助于中间文件。是否可以通过单个 ffmpeg 调用来解决此问题?

如果有帮助,这是我正在使用的视频文件: https://drive.google.com/drive/folders/1hI5Xo6kfAfMd8ZylM6XrPX5fuO88gncE?usp=sharing

注意:我应该提一下,在这个实验中我根本不需要声音(因此是 -an)

最佳答案

setpts 所做的是改变 电话 怨恨电话 即时通讯 小号 夯。 PTS 是显示/绘制帧的时间。视频流的时长等于最后一帧的 PTS + 最后一帧的时长。您的文件为 29.97 fps,因此每帧的持续时间为 0.033 秒。

在您的第一个命令中,第二帧获得 3.47 秒的新 PTS,但其持续时间仍为 0.033 秒,因此流的总持续时间为 3.5 秒

在您的两步过程中,第二帧的 PTS 为 6.97 秒。所以即使持续时间是 7 秒,我认为这不是你想要的。

这样做的方法是

ffmpeg -i input.avi -filter:v "setpts=(7/2)*N/TB" -r 2/7 -an output.avi

在哪里 (7/2)指示目标持续时间(7 秒)和总帧数 (2)。该分数在 -r 中相反。值(value)。 FFmpeg 根据 -r 设置帧持续时间值(value)。

关于video - 如何准确延长小视频剪辑的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890024/

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