我有一台以 30 FPS 录制的相机。我发现相机有时会丢帧。
我有名为的 PNG 文件_Color_<some_number>.png
。例如,_Color_1.png to _Color_10000.png
但中间缺少文件。
我怎样才能最好地使用 FFmpeg 将这些 PNG 帧转换为视频?如果我使用 30 FPS 作为帧速率,则视频会显得有点快,因为缺少帧。
是否可以使用 FFmpeg 制作视频,复制帧来填补缺失部分?是否可以使用可变帧速率?这些会产生相同的结果吗?
答案1
有一些选择。一是编写一个小的 shell 脚本,根据数字将前面的帧复制到缺失的位置。即:
- 从 1 迭代到 10000
- 如果在给定的索引处找不到帧,请复制具有最高先前索引的文件。
- 使用经典方式创建幻灯片。但是,结果可能会相当不稳定,具体取决于丢失的帧数,因为许多帧将被重复。
另一种方法是从图像中创建可变帧率视频。方法如下这个 Stack Overflow 上的答案。基本上,你需要:
- 净化文件名,使索引号连续
- 创建恒定帧率视频
- 根据原始索引号乘以假定的帧速率生成时间戳元数据文件
- 将恒定帧率视频转换为可变帧率视频
- 或者,为了获得最大兼容性:将 VFR 视频转换回 CFR,或许可以使用
minterpolate
过滤器来增加运动平滑度