ffmpeg 降低视频分辨率并保证画质
建议用 -crf X, X 的范围是[0, 51], 越小表示清晰度越高。之前用 -crf 24 文件体积大概减小了 77%,清晰度没有明显变化。
ffmpeg -i 1.mp4 -s 1920x1080 -vcodec libx265 -crf 22 -acodec copy 2.mp4 #编码为 H.265 1080p 音频直接复制
ffmpeg -i 1.mp4 -s 1920x1080 -vcodec libx264 -crf 21 -acodec copy 2.mp4 #编码为 H.264 1080p 音频直接复制
ffmpeg -i 1.mp4 -s 1920x1080 -vcodec hevc_qsv -preset veryslow -q:v 13 -acodec copy 2.mp4 #使用 Intel 核显硬编码 H.265,质量一般,速度快,q:v 为质量参数,越小质量越高
ffmpeg -i 1.mp4 -s 1920x1080 -vcodec hevc_nvenc -preset slow -q:v 13 -acodec copy 2.mp4 #使用 Nvidia 显卡硬编码 H.265,质量不错,速度非常快,q:v 为质量参数,越小质量越高,需要 GTX10XX 及以上显卡
先确定你的设备能不能支持硬解 HEVC,如果支持可以考虑换用 HEVC
没查到要求-strict,你是不是用的是老版本?
ffmpeg -i 1.mp4 -vf scale=-1:1440 -vcodec libx265 -crf 28 -preset slow 2.mp4
crf 越小质量越好但体积和转码耗时更大,libx264 默认 23,libx265 默认 28,h264 建议添加-profile high 缩小体积
ffmpeg -i 1.mp4 -vf scale=-1:1440 -vcodec libx264 -crf 23 -preset slow -profile high 2.mp4
preset 越慢画质越好但耗时更多,一般建议最少 medium,最多 veryslow
medium 也嫌慢又有新 N 卡(10/16/20 系)的可以用 NVENC ( hevc_nvenc , h264_nvenc ),就算 slow 速度也比较快,不过画质会差些
ffmpeg -i 1.mp4 -vf scale=-1:1440 -vcodec hevc_nvenc -preset slow 2.mp4
ffmpeg -i 1.mp4 -vf scale=-1:1440 -vcodec h264_nvenc -preset slow -profile high 2.mp4
这个是压缩到优酷超清的最低标准的命令
ffmpeg -i input -b:v 4000k -minrate 3500k -maxrate 10000k -bufsize 4000k -s 1920x1080 -r 25 -g 25 -c:v libx264 -ar 48000 -b:a 192k -strict -2 output.mp4
然后给你一个我总结多年经验的终极命令
这个命令可以帮你把所有奇怪的分辨率自动加黑边遮幅,变成一个没有拉扯的 16:9 的视频,如果本身就是 16:9 那就直接按照最终参数渲染
ffmpeg -i input.mp4 -filter:v "scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2" -b:v 4000k -minrate 3500k -maxrate 10000k -bufsize 4000k -r 25 -g 25 -c:v libx264 -ar 48000 -b:a 192k -strict -2 output.mp4