使用 ffmpeg 将视频编码以减小文件大小

使用 ffmpeg 将视频编码以减小文件大小

我正在使用这个脚本将视频编码为更小的文件大小:

echo off
set arg1=%1
set _filename=%~n1
set _extension=%~x1
shift
ffmpeg -i %arg1% -c:v h264_amf -crf 18 -preset slow -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:480,format=yuv420p %_filename%.480P%_extension%

它接受一个参数,即视频文件并输出一个新文件。

使用大小为 815,050 KB 的视频文件进行测试,输出结果甚至更大,具体为 1,554,650 KB。

我使用h264_amf它的原因是我在 Windows 上装有 AMD GPU 的机器上进行编码。

我的目标是将大量视频转换为大约 500MB(如果输入大小低于 500MB,则更低),无论质量如何,因为它将在 AI 增强视频播放器中播放,所以输出的质量并不重要。

实现此目的的正确 ffmpeg 参数是什么?

答案1

h264_amf 不支持-crf-preset。如果您希望使用此编码器获得特定的输出文件大小,请使用-rc cbr并使用 来设置适当的比特率-b:v

以 1000 秒输入和约 500 MB 输出为例:

(500 MB * 8000) = 4000000 kb / 1000 seconds - 128kb audio bitrate - ~1% muxing overhead = -b:v 3832k

简单示例命令:

ffmpeg -i input -c:v h264_amf -rc cbr -b:v 3832k -c:a aac -b:a 128k output.mp4

相关内容