在网页上传框里点上传,进度条走到一半跳出「文件大小超过限制,请压缩后重试」;用微信发视频时提示「文件过大,无法发送」。两个提示指向的是同一件事:体积没有落到平台的上限之内。1080p、60fps 的手机原片码率常在 15~20Mbps,3 分钟就有 300MB 上下,把 .mov 改成 .mp4 再另存一遍,文件大小一个字节都不会变。
多数情况下,问题出在只换了容器没动码率这一步。先看清原视频的大小和时长,用「目标体积 × 8192 ÷ 时长秒数」算出码率上限,再按这个码率配合降分辨率转码;导出后超过 100MB,就降一档重压一次。
以下方法在 Windows 10/11 实测可用。参数算准了,多数手机原片都能一次落到 100MB 以内,不必急着重拍素材。
适用系统:Windows 10/11;最后更新:2026-10-26。
从这两个提示往回查,落点一般在三处:
.mov 改成 .mp4,封装换了、码率没换,体积自然不动。先确认原始参数和目标上限,再按公式反推码率,比反复换格式去试要快得多,也少一次画质损失。
不算清原始参数,后面的码率就无从下手。这一步只做记录,把体积、时长、分辨率、码率这四个数写下来。

参数记完就能判断要不要一起降分辨率,1080p 的素材想压到 100MB 以内,通常要配合降到 720p。
这一步只读不写。四项参数记在同一个地方,后面每一步都要回头跟它们对照。
体积等于码率乘时长。先把能用的码率算出来再去转码,就不用靠一次次试。100MB、200 秒的素材,算下来视频码率要在 3900kbps 上下。

算出的这个数就是转码时要填的码率,不用再凭感觉调。
8192 这个系数来自 1MB = 1024KB × 8bit 的量纲换算,推一次就够。音频占用的那 128kbps 要先从总码率里扣掉,剩下的部分才是视频能用的。
把第 2 步算出的数值填进转码参数,输出一次看结果就够了,参数不需要来回试。
习惯命令行的话,等价写法是:
ffmpeg -i input.mp4 -c:v libx264 -b:v 3900k -vf scale=1280:-2 -r 30 -c:a aac -b:a 128k output.mp4
scale=1280:-2里的-2让高度自动取偶数。H.264 要求宽高都能被 2 整除,写成-1在某些源分辨率上会让编码器直接报错。
第一次转码用单遍编码就够,想体积更稳再考虑两遍编码。
第一次压完先看实际大小,再按固定顺序往下调,不要乱改参数。
104857600 字节这个数。
一般降到码率 2500kbps、720p、24fps,3 分钟的视频就能稳稳落在 100MB 以内。
参数已经压到画质下限,就从编码格式和素材本身想办法,继续压码率只会让画面更糊。
到这一步还超限,多半是原片时长太长,剪短比调参数管用。
按 100 × 8192 ÷ 时长秒数 算。3 分钟(180 秒)的视频约 4550kbps,再乘 0.95 留余量,视频码率给 4300kbps 左右,音频 128kbps,分辨率降到 720p 就够用。
1GB 压到 100MB,体积要缩到十分之一,单靠降码率不够。先把分辨率降到 720p 甚至 960×540,帧率降到 24fps,再按算出的目标码率转码;原片太长就先剪掉用不上的部分,比硬压画面划算。
先把视频拷到电脑再处理,手机端的转码参数大多不透明。右键属性看总比特率,iPhone 原片常在 15Mbps 以上,按第 2 步的公式算出码率,在电脑上转码一次,落到 100MB 以内通常没问题。
常见两种:码率没填对,或者码率按标称值走、封装后略有偏差。核对导出文件的字节数,超过 104857600 就按第 4 步的顺序,先降帧率再降分辨率,最后把码率乘 0.8 重压一次。
说明码率给低了。把码率往上调 20% 重压,分辨率降到 720p 换取码率空间;也可以换 H.265 编码,同体积下画面会更清楚一些。
104857600 字节,压到 100.0MB 很容易因为封装偏差超出去,把目标定在 95MB 更省事。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。