在将一组图像转换为视频时使用比特率会改变视频的长度

在将一组图像转换为视频时使用比特率会改变视频的长度

我有 ffmpeg 版本 n5.0.1-3-gb655beb025,我正在尝试将一组 120 个 PNG 转换为每秒 60 帧的 AVI 文件。当我使用以下命令执行此操作时:

ffmpeg.exe -r 60 -i Frame-%%05d.png MyVideoLQ.avi

它创建了正确长度(2.00 秒)的视频,但质量很差(比特率为 200kbps)。因此,我尝试通过比特率和缓冲区来解决问题:

ffmpeg.exe -i Frame-%%05d.png -b:v 4096k -maxrate:v 4096k -minrate:v 0 -bufsize 4096k -r 60 MyVideoHQ.avi

结果质量很好,但是视频现在有 4.8 秒。

  1. 这是一个错误,还是我误解了所使用的选项?
  2. 我如何实现我的目标?

答案1

放置-r 60 -i

ffmpeg.exe -r 60 -i Frame-%%05d.png -b:v 4096k -maxrate:v 4096k -minrate:v 0 -bufsize 4096k MyVideoHQ.avi


当 位于-r 60之前 时-i,帧速率应用输入。
-r 60位于 之前 之后 时-i,帧速率应用输出。

当我们输入一系列图像时,输入帧率假定为 25fps(FFmpeg 默认值)。
当输入为 25fps,而输出需要为 60fps 时,FFmpeg 通过复制帧来应用帧率转换(从 25fps 到 60fps)。

比率60/25=2.4

因此,产量总是长 2.4 倍。


为了用更少的参数获得更好的质量,我们可以选择视频编解码器和crf设置。

例子:

ffmpeg.exe -r 60 -i Frame-%%05d.png -vcodec libx264 -crf 17 MyVideoHQ.avi

较低的值crf适用较高的质量和较大的文件大小。

相关内容