音视频

视频压缩

把视频压到能发出去的大小。填上必须满足的上限,比如邮件附件的 25 MB、聊天软件的 10 MB,或者任何你被告知的数字,码率会按视频时长自动算好。FFmpeg 在浏览器标签页里重新编码,文件不上传。

  • 直接按文件大小压缩,不用靠调质量滑块反复试
  • 开始前先判断这个目标现不现实,压完再告诉你有没有压进去

把视频文件拖到这里

文件留在你自己的电脑上,不会上传

支持 MP4、MOV、WebM、MKV、AVI、M4V,以及 FFmpeg 能识别的大部分格式。

还没有选择视频

先选一个视频文件。选好之后才会开始下载引擎。

压缩

功能简介

压到指定大小是一道额度题,不是调一个画质开关:视频时长和要满足的大小决定码率,而分辨率、帧率和音频决定这个码率够不够撑起画面。这个工具把这套算法摊开给你看。

  1. 01

    按你给的大小压缩

    填上拿到的限制,25 MB、10 MB、8 MB 都行,码率会根据视频时长和音频占用自动算出来。大多数压缩工具只给一个画质滑块,得压三遍才知道能出多大;这里你在意的那个数字就是你设的那个。

  2. 02

    目标不现实的时候会直接说

    十分钟的 1080p 塞进 25 MB,平均下来只有 350 kbps 左右,任何编码器都做不出能看的画面。与其等好几分钟编出一堆马赛克,工具会先拿额度和画面尺寸比一比,直接告诉你够不够。

  3. 03

    还会告诉你怎么改才行

    目标达不到时,它会给出具体的设置组合,比如 480p 配源帧率,点一下就能应用。优先牺牲分辨率而不是帧率,因为画面小只是看起来小,帧率掉下去看起来是坏了。

  4. 04

    压完给一句结论

    你要的从来不是把它压一压,而是它到底发不发得出去。所以结果会用和你填的上限同样的单位,直接说压进去了没有,不用你再去文件管理器里对一遍。码率控制偶尔压不准,它也会说,并给出该改哪里。

  5. 05

    真正影响体积的那几个开关

    分辨率、帧率、音频码率分开列,因为它们的作用完全不同:长宽各减半像素就只剩四分之一,降帧对录屏的收益远大于实拍,音频则是短片里占比很高的固定开销。所有控件都只会往下调,不会放大画面,也不会凭空补帧。

  6. 06

    本地处理,不上传

    FFmpeg 编译成 WebAssembly 在标签页里运行。没有上传、没有排队、没有水印,也不用注册账号。大文件仍然受浏览器内存限制,但客户素材和内部录屏可以一直留在原来那台机器上。

如何使用

从发不出去的文件到能发出去的文件,四步。

  1. 01

    把视频拖到页面上,或者用文件选择器。这时候引擎开始下载,大约 31 MB,只需要一次,随后会读出分辨率、帧率和时长。

  2. 02

    填上必须压到多少以内,或者点一个预设。如果没有具体限制,切换到画质档位,让大小顺其自然。

  3. 03

    看右侧的结论。额度对当前画面来说太紧的话,应用它建议的分辨率和帧率;否则调一下音频码率,或者保持原样。

  4. 04

    点击压缩。压好的 MP4 会出现在右侧,并且用实际大小和你填的上限对照,下载前可以先播放确认。

功能说明

决定你拿到的文件是不是你要的那个文件的那些细节。

  • 按 MB 设定目标大小,预设有 8、10、16、25、50、100 MB
  • 码率按时长和音频占用算出,刻意留出余量瞄准上限以内,最终以结果面板的实际大小为准
  • 编码前给出可行性判断,依据是每像素分到的比特数,不是拍脑袋
  • 目标不现实时,一键应用能达成的设置组合
  • 另有恒定画质模式,适用于没有具体限制的场合
  • 分辨率预设按短边计算,竖屏视频压完仍然是竖屏
  • 帧率可限制到 60、30、24、15,只在源文件更高时才提供
  • 音频可选 192、128、96、64 kbps,也可以整条移除
  • 任何情况下都不放大画面,目标额度也以源文件本身的码率为上限
  • 压完直接判断有没有进到你设的上限以内
  • 写入 faststart,文件没下完就能开始播放
  • 引擎下载时显示真实字节进度,之后显示编码进度

适合哪些场景

大家来找视频压缩工具,通常是为了这些事。

  1. 文件太大发不了邮件

    附件上限常见是 25 MB,而手机随手拍两分钟就能超好几倍。设好上限,让分辨率降到刚好能装下的档位,直接把文件发出去,而不是发一个链接过去。

  2. 压到聊天软件的上传上限以内

    聊天软件超过固定大小就传不了,具体数字跟软件和账号类型都有关系。把适用于你的那个数填进去,编码就按它来,不用压一次试一次。

  3. 提 bug 时附上的录屏

    界面录屏大部分区域是静止的,压缩率非常高,降帧的代价也几乎为零。两分钟的复现录屏一般能压到 10 MB 以内,文字仍然看得清。

  4. 手机素材同步前先瘦身

    现在的手机录制码率都很高,几段视频就能把备份空间占满。在文件离开设备之前压到合理的大小,不用扩容也能让相册保持可用。

  5. 满足表单或工单的上传限制

    客服系统、报名表、作业提交都会限制附件大小,而且经常是传了很久之后才提示失败。事先把大小压对,一次就能提交成功。

  6. 让长录像变得方便分享

    一节课、一场会议、一次演示,并不需要广播级的画质才有用。降到 720p 配一个适中的码率,人声和幻灯片依然清楚,几个 GB 的文件也变成了别人真的愿意下载的东西。

  7. 给网页上的视频减重

    背景视频或者产品演示如果按原始码率放上去,会拖慢每一个访问者。压到一个固定额度,等于把这段视频的代价变成一个主动的决定,而不是事后才发现的意外。

  8. 不该上传的素材

    访谈录像、医疗影像、客户素材、内部系统录屏,里面的内容都不适合出现在某个在线转换站上。这里的一切都发生在标签页内,打开网络面板就能确认。

延伸阅读

额度是按整段时长摊开的,所以想让文件变小,减秒数往往比减码率更直接,这就要用到 视频截取。如果问题出在画面本身,需要的是裁剪或者换一种画面比例而不是单纯压小,那么可以看看 视频尺寸调整与裁剪。要是片子短到更适合放进 README 或者聊天窗口,动图比视频传得更远,这时候该用的是 视频转 GIF

使用建议

让文件一次就压进限制以内的几个习惯。

  • 目标比真实上限再留一点余量,平台说 25 MB 时按 24 填,因为各家对开销的算法未必一致
  • 先降分辨率再降帧率,画面小只是看起来小,帧率掉下去看起来是坏了
  • 只需要其中一段的话先剪再压,额度是按整段时长摊的,留下的每一秒都要分走一份
  • 音频保持 128 kbps 就行,只有片子很短的时候降到 64 才值得,那时它在小额度里占比很高
  • 纯录屏没有声音的话直接移除音频,别把额度花在一条空轨道上
  • 相信那句判断,不要迷信预设:判断说画质会差,压出来就是差的,多等一分钟也不会变好
  • 时间长或者分辨率高的活用电脑浏览器做,手机分给标签页的内存少得多

边界与注意事项

这个工具刻意不做的事,以及它力有不逮的地方。

  • 这里的压缩就是重新编码,成品比原始素材多了一代损失。想让视频明显变小,没有绕开解码和重新编码的办法。
  • 它不裁剪、不剪辑、不旋转、不拼接、不加字幕,也不改变画面形状。它只负责把体积降下来,缩放画面只是因为那是最有效的手段。
  • 输出固定是 MP4,视频用 H.264,保留音频时用 AAC。这里不写 WebM、HEVC 和 AV1,而且只带走第一条音轨,多语言音轨和字幕都不会保留。
  • 编码是单遍的。两遍编码离目标更近,但要在单线程上把整段视频编两次,所以这里改成把实际大小如实报出来,而不是假定一定压准了。
  • 码率控制是朝目标努力,不是承诺一定达成。画面持续变化的素材可能超出百分之几,所以目标本身就设得比上限低一点,结果也会实测给你看。
  • 目标相对时长小得离谱时,任何设置都救不回来。工具会直说,而不是产出一段没法看的东西然后当作完成。
  • 编码在 WebAssembly 里单线程运行,比电脑上的 FFmpeg 慢。素材长或者分辨率高,就是要花时间。
  • 编码开始前整个视频都会读进内存,而 WebAssembly 是 32 位的,所以超过 250 MB 左右就不太可靠了。
  • 引擎首次使用约 31 MB。之后会缓存,但在全新的浏览器配置里第一次压缩要承担这次下载。
  • 有些容器 FFmpeg 读得了,浏览器却播不了,比如封装 HEVC 的 MKV。压缩照常进行,只是没有预览。

常见问题

把视频压到能发出去的过程中,常见的一些问题。

怎么把视频压缩到指定的文件大小?

选择目标大小,填上必须压到多少以内,然后点击压缩。工具把这个大小乘以八换算成比特额度,扣掉音频要用的部分,再除以视频时长,得到的就是编码码率,并且会稍微往下留一点余量,避免容器开销把结果又顶回上限之外。压完之后会拿实际大小和你填的上限对照着告诉你。

发邮件的视频怎么压缩?

大部分邮箱的附件上限在 25 MB 左右,所以把目标设成 25 或者再低一点,让分辨率降到刚好装得下的档位。手机拍的两分钟视频一般会落在 720p,看起来完全清楚。如果片子长到工具提示额度太紧,先把它剪短,效果会比在这里调任何设置都明显。

视频压缩能做到无损吗?

严格说做不到,任何工具都做不到。H.264 本身是有损格式,让文件变小就意味着用更少的比特描述画面,一定会舍弃一些东西。能做到的是让你察觉不到:要么码率对这个画面来说够用,要么把分辨率降下来,让剩下的比特摊在更少的像素上。后一种在手机屏幕上通常看不出来,所以工具会优先动分辨率。

压完还是太大是怎么回事?

多数情况是这个分辨率下目标本来就达不到,开始之前那句判断已经说了,应用它建议的设置就能解决。少数情况是画面持续变化,码率控制超出了百分之几,结果面板会照实说明而不是瞒着你。把目标设得比真实上限低一点,或者把分辨率往下调一档,就过去了。

到底什么会让视频文件变小?

主要是四样,按影响从大到小。分辨率最关键,长宽各减半,像素数只剩四分之一,同样的码率分到每个像素上就多了四倍。码率是最直接的控制项,也正是目标大小替你设定的东西。帧率对录屏和幻灯片的作用远大于实拍素材。音频是固定开销,只在短片里才明显,因为那时它在小额度里占比很高。

我的视频会被上传到什么地方吗?

不会。引擎是编译成 WebAssembly 的 FFmpeg,运行在你的浏览器标签页里。文件从磁盘读进标签页的内存,结果再作为下载写回去,整个过程没有任何数据经过网络。压缩的时候打开浏览器的网络面板就能确认这一点。

该用目标大小还是画质档位?

别人给了你一个数字的时候用目标大小,比如邮箱、聊天软件或者上传表单的限制,这也是这个工具主要面向的场景。没有人在强制什么、只是想让文件小一点的时候用画质档位:它在整段片子里保持同样的细节水平,大小随素材而定,通常比硬塞进一个额度更均匀。

视频最多能压到多小还不难看?

这更多取决于画面尺寸,而不是文件本身。有意义的衡量方式是每一帧的每个像素能分到多少比特,所以同一个码率在 480p 下没问题,到 1080p 就撑不住了。右侧那句判断算的正是这个,也正因为如此,目标太小的时候正确答案几乎总是把画面缩小,而不是在原尺寸上忍受更差的画质。

压缩视频会降低分辨率吗?

只有你主动选才会。分辨率默认保持不变,每一个预设都需要你点一下,所以只设目标大小的话改变的只有码率。额度对当前画面太紧时工具会建议降分辨率,但不会背着你应用;它也从不放大画面,比源文件更高的预设一律当作保持原样处理。

压缩要花多久,最大能处理多大的文件?

每一帧都要在标签页里单线程解码再编码,所以耗时取决于时长、分辨率和你的机器:短片很快,又长又高清的录像就不快了。真正的天花板是内存而不是时间,整个文件在处理期间都留在标签页里,所以超过 250 MB 左右会变得不可靠。先把需要的那一段剪出来,这两个数字都能降下来。

更多相关工具

更多在浏览器本地处理视频的工具。