FFmpeg问题:如何将1分钟MP4转换为4MB以内画质尚可的VP8编码WebM?
4chan /wsg/ /gif/板块WebM转换优化方案
你当前使用的固定比特率编码模式码率分配效率极低,是导致体积和画质无法平衡的核心原因,调整参数如下:
- 优先使用恒定质量(CRF)编码模式:替代原有固定
-b:v 400k的设置,libvpx的CRF取值范围为4~63,数值越小画质越高,配合-b:v 0让编码器自动按需分配码率,仅在需要高码率的动态场景提升码率,静态场景降低码率,整体压缩效率提升20%以上。 - 音频参数瘦身:普通短视频的音频不需要128k码率,将
-b:a下调到96k甚至64k,人耳几乎感知不到音质差异,可节省10%~20%的总文件体积,把空间留给视频画质。 - 提升压缩效率:添加
-cpu-used 2参数,该参数取值范围为-8~8,数值越低编码速度越慢但压缩率越高,2是兼顾编码速度和压缩效率的最优值,同画质下可再压缩10%左右的体积。 - 可选优化项:如果原视频帧率高于30fps,可添加
-r 30参数将帧率限制为30fps,短视频场景下几乎无感知,可进一步降低体积。
优化后命令模板
ffmpeg -i input.mp4 -threads 4 -c:v libvpx -c:a libvorbis -crf 30 -b:v 0 -b:a 96k -quality good -cpu-used 2 -qmin 0 -qmax 55 output.webm
调试方法
首次转换先使用CRF 30的参数:
- 若输出体积大于4MB,每次将CRF数值+2重新转换,直到体积符合要求
- 若输出体积小于3.5MB还有富余空间,每次将CRF数值-2重新转换,拿到最优画质
动画类内容CRF可放宽到3235区间仍可保持不错的观感,真人实拍内容建议控制在2832区间。
内容的提问来源于stack exchange,提问作者svart-galla
相关产品推荐
相关产品推荐

