1. 选择视频文件
点击选择视频,或把视频拖到这里
支持 MP4 / WebM / MOV / MKV 等浏览器能解码的格式;文件仅在本地处理
尚未选择视频。
原理、能力与限制(务必先看)
- 能做到什么:本工具用 Canvas 重新绘制每一帧并交给浏览器的
MediaRecorder实时重新编码, 因此可以得到真正意义上的“重新压缩”(降低分辨率、码率、帧率),而不是改个后缀名。整个过程在你的电脑上完成,视频不会上传。 - 速度:为什么兼容模式要等那么久,快速模式为什么快:
· 兼容模式用 Canvas 把画面逐帧画出来再交给MediaRecorder录制。录制器给每一帧打的时间戳是墙上时钟—— 它记录的是“这一帧是什么时候到的”,而不是“这一帧在视频里是第几秒”。所以必须按正常速度播放一遍,录制耗时自然就约等于视频时长 (1 分钟的片段约需 1 分钟)。这也是纯 Canvas 方案能保持可用性能的原因。
· 快速模式改用 WebCodecs(VideoDecoder+VideoEncoder): 直接解开视频的编码数据,把每一帧连同它自带的原始时间戳一起送去重新编码,最后封装成 MP4。 全程不依赖播放,能跑多快就跑多快——在支持硬件编解码的电脑上通常是实时的 5~20 倍, 一段 1 分钟的视频十几秒就能压完,而且分辨率、码率、帧率、片段裁剪这些参数一样有效。 代价是首次使用要临时加载约 107 KB 的编解码组件,并且只支持 MP4 / MOV / WebM / MKV 这几种容器。 - 帧率选项说明:快速模式下帧率由编码器直接处理,可以精确地抽帧(例如 60fps 源降到 24fps); 兼容模式下则受下面这条限制。
- 兼容模式的帧率上限(60 fps 天花板是怎么回事):这不是浏览器的硬性规定,而是“实时录制”这条路线的物理限制——
每一帧都要先画到 Canvas 上,绘制节奏由
requestAnimationFrame决定,它跟随显示器刷新率 (普通屏幕 60 Hz,高刷新率屏幕 120 / 144 Hz),视频元素的画面呈现也受同一个垂直同步节拍约束。 因此:源视频帧率不高于刷新率时可以原样保留(帧率选项已提供 15 / 24 / 30 / 48 / 60 / 120 fps 与“自动检测源帧率”); 但源视频是 120 fps 而屏幕只有 60 Hz 时,最多只能录到约 60 fps,多出来的帧采集不到。 想要突破这个限制就用快速模式——它走的是 WebCodecs,不与屏幕刷新率挂钩。 - 输出格式:兼容模式下的可选格式取决于浏览器支持的编码器(Chrome / Edge 一般可输出 MP4(H.264) 或 WebM(VP9/VP8); Firefox 通常只支持 WebM)。快速模式固定输出 MP4(H.264 + AAC),这是兼容性最好的组合。
- 压缩期间请不要切换标签页,也不要最小化窗口:浏览器会限制后台页面的绘制频率,可能导致丢帧或录制中断。
- 音频通过
AudioContext重新采样后写入输出文件;压缩过程中默认静音(避免打扰),可在参数区打开声音监听。 - 如果视频很大(超过约 1 GB)或时长很长,浏览器内存与编码压力会明显上升,建议先用“片段裁剪”分段处理。