我正在使用这个脚本将视频编码为更小的文件大小:
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
- 获取持续时间
ffprobe
。 - 请参阅
ffmpeg -h encoder=h264_amf
以了解该编码器的更多特定选项。