FFmpeg单次实现裁剪、分辨率调整与FPS转换及画质优化咨询
FFmpeg单次实现裁剪、分辨率调整与FPS转换及画质优化咨询
嘿,我帮你梳理下解决方案,一次性搞定裁剪、调分辨率和改帧率,还能尽量保住画质!
一步到位的FFmpeg命令
直接用一条命令完成所有操作,避免多次转码带来的画质损失:
ffmpeg -i input.mp4 -filter:v "crop=480:360:20:0, scale=256:192, fps=14" -c:v libx264 -crf 18 -preset slow -c:a copy output.mp4
参数解释:
-i input.mp4:指定你的输入视频文件- 滤镜链(按顺序执行):
crop=480:360:20:0:居中裁剪到480x360——原视频宽度520,要裁掉左右各20像素((520-480)/2=20),所以x偏移设为20,y偏移0(高度不变无需裁剪)scale=256:192:将裁剪后的视频缩放到目标分辨率fps=14:把帧率调整为14fps
- 编码参数:
-c:v libx264:使用H.264编码(目前最通用的高质量编码)-crf 18:CRF值控制画质,18-23区间基本是「视觉无损」,数值越低画质越好、文件越大-preset slow:慢预设会让编码更耗时,但能获得更好的压缩效率和画质-c:a copy:直接复制原音频流,避免音频重编码损失
为什么分步操作会导致画质差?
每一次转码(即使是所谓的「高质量」设置)都会引入不可逆的压缩损失,三次转码相当于把损失放大了三次。一次性完成所有滤镜+编码,只做一次压缩,能把画质损失降到最低。
关于无损中间格式的补充
如果确实需要中间步骤用无损格式(比如后续还要编辑),推荐这些编码:
- FFV1:开源的无损视频编码,兼容性较好,文件体积适中,命令示例:
ffmpeg -i input.mp4 -filter:v "crop=480:360:20:0" -c:v ffv1 -c:a copy intermediate_crop.avi - CineForm:适合后期制作的无损/有损编码,对色彩保留很好,命令:
ffmpeg -i input.mp4 -filter:v "scale=256:192" -c:v cfhd intermediate_scale.mov - ProRes:苹果生态常用的专业无损编码,需要FFmpeg编译时支持ProRes,命令:
ffmpeg -i input.mp4 -filter:v "fps=14" -c:v prores_ks intermediate_fps.mov
不过还是建议优先用一步到位的命令,既节省时间又减少不必要的画质损耗。
备注:内容来源于stack exchange,提问作者matalkg
相关产品推荐
相关产品推荐

