我正在尝试在完全相同的时间戳上拼接各种视频。我的工作命令会在每个时间戳上强制关键帧,然后使用它segment_frames
来完成工作。问题是,它并不适用于每个视频,我不确定为什么。
ffmpeg -i input.mp4 -c:v libx264 -force_key_frames timestampsArray -preset ultrafast -f segment -segment_frames keyframesArray -reset_timestamps 1 -map 0:0 output%03d.mp4
有些输出很完美,而有些则不太正常。我测试了一些好输入视频和一些坏输入视频,想看看设置中是否存在某种模式,但似乎没有。
为了直观展示,这里有 4 个输出。底部的两条音轨是准确的,在 2 秒标记处有正确的分割,但顶部的两条音轨有分歧。
请告诉我我还能提供什么帮助。恕我直言,我不需要音频。提前致谢。
答案1
经过进一步挖掘,我现在意识到 ffmpeg 实际上输出了所有情况下的预期结果。这个问题实际上是在我将剪辑放入 Premiere 时出现的。当序列的帧速率与剪辑的帧速率不一致时,它就会变得不同步。这对我来说是一个新领域,所以我还不确定我的解决方案是否最佳。
通过-r 24
在命令中将输出文件放在前面,我能够对齐 Premiere 中渲染的时间戳并解决我描述的问题。我的假设是,只要我一直降低从输入到输出的帧速率,每秒 24 帧就应该看起来很清晰。如果这不是真的,请告诉我。谢谢。