使用-crf&-preset

使用-crf&-preset

需要知道如何使用 FFMPEG 和 trim 命令压缩输出视频。

修剪视频的命令

ffmpeg -ss 823.2 -t 44.1 -i input.mp4 -ss 1074.1 -t 27.3 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

我的输入.mp4 视频为 4GB,分辨率高,输出视频也是高质量且大尺寸。是否可以减小输出视频的尺寸?

答案1

使用-crf-preset

您正在输出 MP4。默认编码器是 libx264(大多数版本ffmpeg都有--enable-libx264,所以我假设您的版本也有)。

  1. 使用 控制质量-crf。范围是 0-31。默认值是 23。无损是 0(大文件)。视觉无损是 17 或 18。值越高,质量越低,因此文件大小越小。使用仍然提供可接受质量的最高值。将 CRF 值增加 +6 将导致输出大小减小约 50%(例如-crf 23vs -crf 29,不比较输入与输出大小)。无法使用 预测输出文件大小-crf

  2. 用于-preset控制压缩效率,从而控制编码速度。较慢的预设:启用更花哨和复杂的压缩功能,编码时间更长,并且通常提供较小的文件大小。使用最慢的预设。默认为中等的

FFmpeg 维基:H.264了解更多信息。

例子:

ffmpeg -ss 823.2 -t 44.1 -i input.mp4 -ss 1074.1 -t 27.3 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -crf 29 -preset slower output.mp4

使用 libx265 甚至可以获得更小的文件

添加-c:v libx265输出 HEVC/H.265 视频而不是 H.264。它是一种较慢的编码器,但通常会输出较小大小的文件,同时保证相同的质量。您的播放器/设备可能不支持此格式。

libx265 也使用-crf-preset,但是-crf值有些不同。

FFmpeg 维基百科:H.265了解更多信息。

例子:

ffmpeg -ss 823.2 -t 44.1 -i input.mp4 -ss 1074.1 -t 27.3 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx265 -crf 35 -preset slow output.mp4

如果需要针对特定​​的输出文件大小

使用两遍. 否则,就使用-crf

不要使用-fs

-fs应该在输出达到特定大小时停止编码。它不会自动将整个视频调整到指定大小。而且,-fs可能不准确。请参阅限制 FFmpeg 中的文件大小了解有关 的更多信息-fs

答案2

您可以使用限制文件大小-fs,然后以字节为单位指定所需的文件大小。

当然,要使其大小合理,不要太小,以免媒体无法观看。使用-vcodec h265也可能有帮助,因为 H.265 编解码器允许更小的文件大小,而且它较新。

您还应该添加一个-crf值 - 将其更改为 26-30 左右。crf值越高,比特率越低,crf值越低,比特率越高,因此请随意调整。

-vcodec要按照我上面描述的方式使用,您需要添加-vcodec libx265

-fs例如,如果您想将文件大小限制为 250mb,则可以使用您-fs 250000000 必须将文件大小从兆字节(或千兆字节,取决于您的需要)转换为字节。您只需在 Google 中搜索“mb 到字节”或“gb 到字节”即可完成此操作。

如果您希望该-crf值为 28,您可以输入-crf 28并根据需要调整该数字。

我建议尝试一下-fs-crf限制,直到你获得满意的文件大小和视频质量。

因此,假设您在问题中添加的 trim 命令有效,那么您的最终命令应该是这样的:

ffmpeg -ss 823.2 -t 44.1 -i input.mp4 -ss 1074.1 -t 27.3 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -vcodec libx265 -fs YOUR_FILE_SIZE_IN_BYTES -crf 29 output.mp4

请记住,如果您想使用此方法,您必须以字节为单位指定所需的文件大小,并且您也可以更改该-crf值。

相关内容