ffmpeg 降低帧速率不会减小文件大小

ffmpeg 降低帧速率不会减小文件大小

我的目标是在不损失质量的情况下减小视频的整体文件大小。源视频的帧率为 30fps,关键帧为每 90 帧。就我们的目的而言,我们只需要视频的帧率为 3fps,关键帧为每 300 帧,我的假设是将视频转码为此将减小视频的整体大小。

此 ffmpeg 命令将源视频重新编码为out.mp4

ffmpeg -i in.mp4 -vcodec libx264 out.mp4

此命令降低 fps 并增加 GOP。

ffmpeg -i in.mp4 -vcodec libx264 -x264-params keyint=300:scenecut=0 fps=fps=3 out.mp4

我的问题是为什么两个命令的输出会产生相同的视频大小?

答案1

按照ckujau 的评论,原始命令缺少-filter:v选项:

ffmpeg -i in.mp4 -vcodec libx264 -x264-params keyint=300:scenecut=0 fps=fps=3 out.mp4

它应该fps=fps=3像这样放在前面:

ffmpeg -i in.mp4 -vcodec libx264 -x264-params keyint=300:scenecut=0 -filter:v fps=fps=3 out.mp4

将此发布在这里,因为 ckujau 的评论显然是答案,但他们只是将其作为评论发布。

答案2

这个答案以及链接的,详细解答终于给我指明了正确的方向:对我来说,如果我不调整比特率(或者类似地,恒定速率因子)。

增加临床报告格式减少质量。对于 x264 来说,值 28 处于质量较低端:

ffmpeg -i in.mp4 -c:v libx264 -crf 28 -vcodec libx264 -x264-params keyint=300:scenecut=0 -filter:v fps=fps=3 out.mp4

类似地,您可以指定目标比特率:

ffmpeg -i in.mp4 -b:v 450k -vcodec libx264 -x264-params keyint=300:scenecut=0 -filter:v fps=fps=3 out.mp4

这两种方法都使文件大小减少了 2 倍以上。

相关内容