同一张图存法不同差多少:我把手机壁纸和站上 15 张配图都压了一遍
同一张壁纸 674.9 KB 能压到 122.9 KB,站上 15 张配图省到四分之一

原片本身已经被压过一遍了。我把画质参数调到"更高一档"想让它更清楚,结果文件涨到 2.2 倍,画面没有任何变化。
手上有一段 34 分钟的八段锦原片:1080×1920 竖屏、30 帧、687 MB。我想压到能发出去的体积,就顺手把各种参数都量了一遍。
原片只读不动。我从中间切了 63.48 秒当试验品,18,484,527 字节(17.63 MiB)。九种压法全在这一小段上跑,跑完逐个比。
CRF 是"画质目标"。数字越小越清楚、文件越大,常见取 18 到 28。它不是百分比,18 到 23 的差距不等于 23 到 28 的差距,得实测。
preset 是"花多少时间换体积"。veryfast 快,fast 慢一些。scale 用来改分辨率,-c:a copy 把音轨原样搬过去,不重编。
一条命令长这样:
ffmpeg -i src60.mp4 -c:v libx264 -crf 28 -preset fast -c:a copy out.mp4
量画质我用 SSIM(结构相似度,0 到 1,1 表示和原片一模一样)。ffmpeg 自带这个滤镜,逐帧比对:
ffmpeg -i out.mp4 -i src60.mp4 -lavfi "[0:v][1:v]ssim" -f null -
输出里 All 是总分。表格里我用 Y 那一项(只看亮度和细节),因为人眼对亮度最敏感。这一小段一共 1902 帧,每一帧都比了一遍。
| 做法 | 体积 | 相对原切片 | 码率 | SSIM(Y) | 耗时 |
|---|---|---|---|---|---|
原切片 -c copy |
17.63 MiB | 100% | 2,329 kbps | 1.0000 | 0.3 秒 |
| CRF18 fast | 39.01 MiB | 221% | 5,155 kbps | 0.9893 | 156.8 秒 |
| CRF23 fast | 24.33 MiB | 138% | 3,215 kbps | 0.9858 | 130.5 秒 |
| CRF28 fast | 14.90 MiB | 85% | 1,969 kbps | 0.9762 | 116.0 秒 |
| CRF32 fast | 8.96 MiB | 51% | 1,184 kbps | 0.9587 | 99.9 秒 |
| CRF23 veryfast | 19.76 MiB | 112% | 2,611 kbps | 0.9811 | 62.1 秒 |
| CRF23 缩到 720p | 16.28 MiB | 92% | 2,151 kbps | 0.9664 | 75.0 秒 |
| x265 CRF23 fast | 24.31 MiB | 138% | 3,212 kbps | 0.9842 | 260.6 秒 |
| CRF18 再压 CRF23 | 25.91 MiB | 147% | 3,423 kbps | 0.9842 | 136.0 秒 |
720p 那行是把画面放大回 1080 再比,这样跟其他行同一尺寸。耗时是这台 2 核机器上的真实秒数,1 分钟片子要跑 1 到 2.6 分钟。
顺手量了一下音轨:用 -c copy -an 把声音剥掉,文件从 18,484,527 字节变成 17,423,740 字节,声音占 1,060,787 字节,也就 5.7%。所以视频那头压到极限,最多再省这 5.7%。
这几组我都没有在手机小屏上逐个看,表里也就没有"观感分"。SSIM 只说明画面和原片有多像,不等于你觉得好看。
坑 1:设 CRF18 想"更清楚",文件变 39.01 MiB,是原切片的 221%。原片本来就只有 2,329 kbps,是别人压过的成品。转码只是把已有信息重新分配,变不出新细节。拿现成片子再压,CRF 只能往 28、32 走。
坑 2:CRF23 也省不下来(24.33 MiB,138%)。真正开始变小是 CRF28:14.90 MiB,剩 84.5%,SSIM 0.9762。
坑 3:降分辨率不是最划算的一刀。720p 同 CRF 是 16.28 MiB、0.9664;CRF32 是 8.96 MiB、0.9587。画质差不多,体积却差 81%。要么不降,要么降了把 CRF 一起调高。
坑 4:preset 慢不一定划算。fast 比 veryfast 多花一倍时间(130.5 秒对 62.1 秒),体积还大 23%,SSIM 只高 0.0047。这段素材我选 veryfast。
坑 5:x265 没占到便宜。同样 CRF23,x265 压出 24.31 MiB,x264 是 24.33 MiB,差 0.07%,时间翻倍。x264 和 x265 的 CRF 不是同一把尺子,数字不能照搬。
坑 6:压两次不会更省。把 CRF18 的成片再压一遍 CRF23,得到 25.91 MiB,比直接压 CRF23 的 24.33 MiB 大 6.5%,SSIM 还从 0.9858 掉到 0.9842。
每压一次丢一点信息,丢完再压只会更糊、更占地方。要定参数就一次压到位,别留"高质量中间版"再加工。
坑 7:34 分钟正片按这段换算,CRF32 也还有约 288 MiB。想直接塞进聊天窗口不现实,只能切段,或者传网盘。
换算口径交代一下:整片平均每秒 337 KB,我切的这段每秒 291 KB,这段比全片平均轻一点。所以上面的换算结果偏小,真实压出来只会更大。
下次的做法:切段用 -c copy,0.3 秒、不掉画质;压体积默认 -crf 28 -preset fast,要更小再上 32,中间不留中间版。
同一张壁纸 674.9 KB 能压到 122.9 KB,站上 15 张配图省到四分之一
三个老推送接口都死了,我用 IndexNow 把新文章推给搜索引擎
表格里的数字,程序读出来可能和眼睛看到的不是一回事