【发布时间】:2018-04-22 18:19:37
【问题描述】:
所以我有一个恒定的 59.94 fps (i.e. 60000/1001) 视频,当我尝试提取一秒时:
ffmpeg -y -i input60fps.avi -ss 0 -t 1 -c:v huffyuv -an output60fps.avi
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ./output60fps.avi
它返回 1.001 秒,我现在明白这是合适的,因为它是最接近请求持续时间的视频帧时间 (60000/1001 seconds) 的倍数。
对之前从 29.97 fps 源转换的 59.94 fps 视频重复此实验,我希望得到类似的结果,但我发现实际情况并非如此:
ffmpeg -i input30fps.avi -vcodec huffyuv -r 60000/1001 -an output60fps.avi
ffmpeg -i ./output60fps.avi -ss 0 -t 1 -c:v huffyuv -an test.avi
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ./test.avi
这实际上是 0.984317 秒。
为什么这种行为不同?我有什么方法可以控制总帧数如何均匀分布,以使每个边界每 60000/1001 毫秒发生一次?我的期望是,由于我只是将帧速率提高一倍,因此我应该期望每 1001/60000 秒有一帧。
【问题讨论】: