Ffmpeg是运行相同的参数,但不同的输入在我的代码中的两个不同的地方。帧率被设置为12fps和-帧率。在一种情况下,输出视频每次都很好地匹配帧率。在另一种情况下,视频返回时每15个输入帧有1秒的视频,但同样是一致的。造成这种差异的可能原因是什么?
参数:
-y -framerate 12 -itsoffset -654ms -i "C:\path/%06d。JPG" -i "C:\path/audio。mp3" -map 0:v:0 -map 1:a:0 -vf scale=1280:720:force_original_aspect_ratio= epad=1280:720:-1:-1: - color=black - codec aac -vcodec libx264 -ar 48000 -pix_fmt yuv420p -movflags +faststart "C:\path\output。mp4"
在调用它的代码中有几十个不同之处,但我不明白这些会如何影响帧率。我试着用任意一个不同长度的mp3来切换,看看是否有效果,但它没有。只剩下图像输入。
编辑:所以它变得更奇怪了。我复制了这两种情况,并修改了每一种的帧率值,以检查发生了什么。在几乎所有情况下,我得到的视频都比预期的多。我用400帧和5秒的音频做这些测试,以确保没有“最短”的因素。只有当它被设置为1时,我才能够获得一个非常准确的帧率。在其他情况下(除了12帧/秒),视频都太短了5-15%。这使我的代码的任何一部分如何产生好的结果变得有点神秘。
###简单地用-r替换-帧速率修复了这个问题。如果有人能解释一下,我仍然很感激。