首页 > 解决方案 > ffmpeg 输出文件大小的增长速度快于电影长度的线性增长

问题描述

我正在使用 ffmpeg 将一些 .bmp 图像串在一起成电影。总共有 1001 帧,长度为 0:40。我正在使用的命令是

ffmpeg -f image2 -i render.%05d.bmp -c:v libx264 -s 512:268 render.mp4

输出文件大小为 33,2 MB,大约是相同长度的全高清视频大小的两倍(大约是像素的 16 倍!)。除了文件大小大得不合理之外,我意识到它的增长速度比线性增长快(无法准确判断它是否是二次的、指数的等)随着帧数的增长。100 帧后它大约有 1536 KB 大(这已经太大了),500 帧后它已经是 15104 KB,1001 帧后它最终达到了 34085 KB。

我有根据的猜测是,对于每一帧,它都会再次存储有关所有先前帧的一些信息,这绝对没有意义。

我究竟做错了什么?在向我推荐 libx265 之前:它将整个视频变成绿色。

标签: ffmpeg

解决方案


利用:

ffmpeg -i render.%05d.bmp -c:v libx264 -vf "scale=512:-2,format=yuv420p" -movflags +faststart output.mp4
  • 如果输出文件太大,请按照FFmpeg Wiki: H.264-crf中的说明添加和-preset选项。
  • 如果输出仍然太大变化-c:v libx264-c:v libx265但编码会变慢。由于像素格式,当您尝试 x265 时,您的输出为绿色:使用format=yuv420p如我的示例中所示将解决该问题。请参阅FFmpeg 维基:H.265
  • 如果您的目标是特定的输出文件大小,则使用两遍-b:v(参见上面的任一链接)。

推荐阅读