首页 > 解决方案 > 在同一命令中减小使用 ffmpeg 制作的视频的大小

问题描述

这是我的命令:

ffmpeg -stream_loop -1 -f concat -i input.txt -i audio.mp3 -map 0:v -map 1:a -shortest output.mp4

它从多个视频创建一个视频并且它正在工作,但是输出视频尺寸太大,我的问题是如何获得一个尺寸较小但不需要另一个命令的视频。

标签: videoffmpeg

解决方案


H.264

在使用libx264 编码时使用 and -crf-preset

ffmpeg -stream_loop -1 -f concat -i input.txt -i audio.mp3 -map 0:v -map 1:a -c:v libx264 -crf 29 -preset slower -shortest -movflags +faststart output.mp4
  • -crf使用提供可接受质量的最高值。默认值为 23。值 29 应小 50% 左右,但质量较低。
  • -preset尽可能使用最慢的预设。默认为medium
  • 请参阅FFmpeg 维基:H.264

HEVC/H.265

文件大小应小于 H.264,但编码速度较慢,您的播放器或设备可能不支持:

ffmpeg -stream_loop -1 -f concat -i input.txt -i audio.mp3 -map 0:v -map 1:a -c:v libx265 -crf 34 -preset slow -shortest -movflags +faststart output.mp4

强制输出文件大小

文件大小无法使用-crf. 如果您需要将视频限制在一定大小以下,请使用两次。但是,这并不比 更好-crf,而且更慢,更复杂,并且仅在您需要输出为特定大小时使用。

较小的宽度 x 高度(分辨率)

添加比例过滤器。将宽度 x 高度缩小 50% 的示例:

ffmpeg -stream_loop -1 -f concat -i input.txt -i audio.mp3 -map 0:v -map 1:a -vf "scale=iw/2:ih/2" -c:v libx264 -crf 29 -preset slower -shortest -movflags +faststart output.mp4

推荐阅读