【发布时间】:2021-11-10 20:58:05
【问题描述】:
ffmpeg 在我的代码中的两个不同位置使用相同的参数但不同的输入运行。使用 -framerate 将帧速率设置为 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=decrease,pad=1280:720:-1:-1:color=black -acodec aac -vcodec libx264 -ar 48000 -pix_fmt yuv420p -movflags +faststart "C:\path\output.mp4 "
调用它的代码有许多不同之处,但我无法理解其中任何一个会如何影响帧速率。我尝试使用任意不同长度之一切换 mp3 以查看是否有效果,但它没有。这样就只剩下图像输入了。
edit:所以它变得陌生。我重现了这两种情况并修改了每种情况的帧率值以检查发生了什么。几乎在每一种情况下,我都获得了比预期更多的视频秒数。我用 400 帧和 5 秒的音频进行这些测试,以确保缺少 -shortest 不是一个因素。我唯一一次获得完全准确的帧速率是在将其设置为 1 时。在其他所有情况下(除了始终有效的逐字 12fps 之外)视频太短了 5-15%。这使得我的代码的任何一部分如何产生好的结果有点神秘。
【问题讨论】:
-
它的偏移量是什么?
-
音频和视频是分开录制的,即两个录制之间的开始时间的差异来同步它们。那里有一个问题,它不应该是这么大的数字,但我假设这是我的录制代码中的问题,而不是 ffmpeg 中的问题。
标签: windows video ffmpeg command-line-interface