gpt4 book ai didi

image - ffmpeg中忽略了vframes选项?

转载 作者:行者123 更新时间:2023-12-04 22:46:41 25 4
gpt4 key购买 nike

我有一个包含 2001 个 PNG 文件的目录。我可以使用 ffmpeg 和以下命令将所有帧转换为 mp4 视频:

ffmpeg -framerate 60 -start_number 0 \
-i pic.comp2.%07d.png -c:v libx264 -r 30 \
-pix_fmt yuv420p input1ia.mp4

这工作正常。但是,我正在创建一个更复杂的应用程序,它只需要读取目录中的前 1020 个文件(特别是 0 到 1019)。一些谷歌搜索把我带到了 -vframes。选项。我的问题是 - 它似乎被忽略或至少与我预期的不同。

我修改后的命令如下所示:
ffmpeg -framerate 60 -start_number 0 \
-i pic.comp2.%07d.png -vframes 1020 -c:v libx264
-r 30 -pix_fmt yuv420p input1.mp4

似乎很多和我做同样事情的人都没有遇到这个问题。所以我做了更多的挖掘。我尝试从 1020 更改 vframe至 -vframes 20 ,这似乎工作正常。所以现在我想这可能是 -framerate 之间的某种不匹配。和 -r ?

生成的完整视频长 33 秒……这在数学上是有意义的。
 1 sec
--------- x 2001 frames = 33.35 seconds
60 frames

这就是为什么我认为将 ~1/2 的 PNG 指定为“终点”会产生前 ~16-17 秒的视频。但我总是使用 -vframes 获得完整的视频。选项。

我假设我对 -vframes 的输入在数学上一定是不正确的,因为少数帧似乎有效。但是,我不明白为什么。

我似乎能做出的最有根据的猜测是,它将 PNG 读取为 60fps ( -framerate ),但 -r使输出视频30fps或什么?但是,我会假设完整的输出视频不会长 33 秒。

最佳答案

当输入和输出速率不匹配时,ffmpeg 会按照常规方案丢弃或复制帧以实现输出速率。因此,对于 60 的输入速率和 30 的输出速率,一半的帧被丢弃。使用 vframes 选项,输出速率为 30 的 1020 帧应生成持续时间为 1020/30 的视频。 = 34秒。

要实现您想要的,请使用 t选项

ffmpeg -framerate 60 -start_number 0 -t 17 \
-i pic.comp2.%07d.png -c:v libx264 -r 30 \
-pix_fmt yuv420p input1ia.mp4

在哪里 17number of frames to be used/ input rate

关于image - ffmpeg中忽略了vframes选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36212536/

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