视频压缩

码率/CRF/分辨率多档

420 次访问
📦
VIDEO COMPRESSION

视频压缩

通过调整 CRF / 码率减小视频体积 · 平衡质量与体积

FFmpeg 命令行(推荐)

视频处理涉及复杂的解码 / 编码 / 滤镜操作,桌面 FFmpeg(开源 / 免费)是业界事实标准。安装 5 分钟,运行如下命令一次解决:

# CRF 模式(推荐 · 自动控制质量) ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 96k output.mp4 # 目标体积模式(两遍编码 · 精确控制大小) ffmpeg -y -i input.mp4 -c:v libx264 -b:v 1M -pass 1 -f null /dev/null && \ ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 2 -c:a aac -b:a 96k output.mp4 # H.265 编码(同等质量下小 30-50%) ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac output.mp4

桌面 FFmpeg 安装

macOS

brew install ffmpeg

用 Homebrew,5 秒安装

Linux

sudo apt install ffmpeg # 或 sudo dnf install ffmpeg

Debian/Ubuntu/Fedora

Windows

下载 Gyan FFmpeg builds

解压后将 bin 目录加入 PATH

Docker

docker run --rm -v $PWD:/work \ jrottenberg/ffmpeg -i input.mp4 ...

无需本地安装

操作步骤

步骤 1:安装 FFmpeg

按上方系统对应的命令安装。验证:ffmpeg -version 应输出版本号。

步骤 2:复制本页面提供的命令

input.mp4 改为你的实际视频文件路径。

步骤 3:在视频所在目录运行

用终端 (Terminal / cmd / PowerShell) 切到视频所在目录,粘贴命令并回车。

步骤 4:等待处理完成

短视频几秒,长视频几分钟。输出文件出现在同目录。

提示

CRF:常用 23-28(值越高体积越小质量越低)。CRF 28 通常可减 60% 体积。

-preset:slow(慢但小) / medium / fast,控制编码速度 vs 体积。

关于本工具

了解工具定位 · 使用场景 · 对比优势

调整视频码率、CRF 值或分辨率,在文件大小与画质之间找到平衡点。自媒体运营者压缩素材上传平台、开发者批量处理测试视频、普通用户缩小手机录像以便分享,均可使用。处理在服务端通过 FFmpeg 完成,视频上传后自动压缩,结果可随时下载。

使用场景

📱

自媒体视频上传

短视频创作者在发布作品到抖音、快手等平台时,常遇到原始素材体积过大导致上传慢或超出平台限制。使用本工具,通过调节码率或选择 CRF 模式,在保持画面基本清晰的前提下将文件压缩至平台要求的 500MB 以下,大幅缩短上传等待时间,同时保留足够画质供手机端观看。

🎓

网课课件分享

教育机构讲师需要将录制的课程视频(1080p、时长 1 小时)上传到学习平台,但平台对单个文件有 200MB 限制。本工具支持多档分辨率调节,讲师可选择将分辨率降至 720p 并配合中等 CRF 值,在保证文字和幻灯片内容清晰可读的前提下,将文件体积压缩 70% 以上,满足平台上传要求。

💼

邮件附件发送

商务人士在发送项目演示视频或产品介绍视频时,常受限于邮件附件 25MB 的大小限制。使用本工具,通过降低码率或选择较高的 CRF 值(如 28),可将原本 100MB 的视频压缩至 20MB 以下,同时保持关键画面(如产品外观、图表)的辨识度,确保收件方无需下载额外软件即可在线预览。

💾

本地存储清理

个人用户手机或电脑中积累了大量家庭录像、旅行视频,占用几十 GB 空间。本工具提供分辨率多档选项,用户可将 4K 视频降采样至 1080p 并配合适当码率,在保留回忆画面细节的前提下将文件体积缩小 80%,释放出大量存储空间用于安装新应用或保存其他重要文件。

🌐

网站素材优化

网站运营者需要将产品展示视频嵌入页面,但原始视频过大导致网页加载缓慢、跳出率升高。使用本工具,通过精确控制码率或选择 CRF 模式,在保证视频在网页上播放流畅的前提下将文件压缩至 5MB 以内,显著提升页面加载速度与用户体验,同时降低服务器带宽成本。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具 (tl654.com)HandBrake (桌面端)传统方法 (Premiere Pro)
数据隐私纯浏览器端处理,视频不上传服务器本地处理,无网络传输本地处理,但需安装大型软件
离线可用需联网加载 WASM 引擎,加载后离线可用完全离线完全离线
处理速度1-3 秒(小文件),受浏览器性能限制5-30 秒(同配置),原生性能更优数分钟至数小时(含渲染队列)
操作门槛打开网页即用,零配置需下载安装,学习编码参数需掌握专业剪辑流程
收费模式免费,无隐藏付费免费开源订阅制(¥34.6/月起)
批量处理单次单文件支持队列批量支持序列批量
平台兼容任何现代浏览器(Win/Mac/Linux)仅桌面端(Win/Mac/Linux)仅 Win/Mac

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传或拖入视频文件,支持 MP4/MKV/AVI 格式,单文件 ≤ 500MB
  2. 选择压缩模式:码率(kbps)、CRF(0-51)、或分辨率(如 720p/1080p)
  3. 调整对应参数滑块或输入数值,右侧实时显示预估输出大小
  4. 点击「开始压缩」按钮,进度条显示处理状态
  5. 压缩完成后点击「下载」保存到本地,或「复制链接」分享

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
输入视频:1080p 30fps 1分钟.mp4 输出设置:CRF=23,分辨率保持1080p,编码h264输出文件:1080p 30fps 1分钟_compressed.mp4(文件大小从 150MB → 45MB,画质肉眼无损)典型场景:CRF 23 是通用平衡档,适合日常视频备份
输入视频:4K 60fps 5分钟.mp4 输出设置:目标码率 10Mbps,分辨率降为1080p,编码h265输出文件:4K转1080p_10Mbps.mp4(文件大小从 2.1GB → 375MB,流畅播放于移动设备)典型场景:高分辨率视频降档,适合手机/平板存储
输入视频:1080p 30fps 30秒.mp4 输出设置:CRF=0(无损模式),分辨率保持1080p,编码h264输出文件:1080p_lossless.mp4(文件大小从 75MB → 210MB,画质完全无损耗)边界 case:CRF=0 为无损,文件反而变大,仅用于剪辑中间片
输入视频:720p 24fps 10秒.mp4 输出设置:CRF=51(最高压缩),分辨率保持720p,编码h264输出文件:720p_maxcompress.mp4(文件大小从 25MB → 1.2MB,画面出现明显块状模糊)边界 case:CRF=51 为极端压缩,仅用于缩略图或极低带宽场景
输入视频:1080p 30fps 2分钟.mp4 输出设置:分辨率设为 320x240,CRF=23,编码h264输出文件:320x240_thumbnail.mp4(文件大小从 300MB → 3.5MB,分辨率过低无法看清文字)边界 case:过度缩小分辨率,适合预览缩略图而非正常观看
输入视频:1920x1080 60fps 1分钟.mp4 输出设置:目标码率 100kbps,分辨率保持1080p,编码h264输出文件:1080p_100kbps.mp4(文件大小从 200MB → 0.75MB,画面严重马赛克且帧率下降)易错 case:码率过低导致画质崩溃,新手常误以为码率越低越好
输入视频:1080p 30fps 5分钟.mp4 输出设置:CRF=23,分辨率设为 3840x2160(升频),编码h264输出文件:upscaled_4K.mp4(文件大小从 750MB → 2.3GB,画质未提升且文件变大)易错 case:升频不会增加细节,只会浪费存储空间

常见错误对照8 个常踩的坑 · 错误 → 修复

1. CRF 值设错方向(越大越好 vs 越小越好)

错误
CRF: 51
修复
CRF: 18-23(默认 23)

CRF 值越小质量越高(文件越大),值越大压缩越狠(质量越低)。51 是最高压缩比,画质几乎不可用;0 是无损。新手常把 CRF 当百分比用。

2. 分辨率改大后没调码率,文件反而变大

错误
原视频 1080p → 目标 4K(3840×2160),码率保持 2 Mbps
修复
目标 4K 时至少把码率提到 8-15 Mbps,或改用 CRF 模式

分辨率翻 4 倍(像素数×4),固定码率下每个像素分到的比特数只剩 1/4,画质严重劣化;但编码器仍会生成 4K 容器,文件大小可能因分辨率元数据膨胀。

3. 用恒定码率(CBR)压非直播视频

错误
码率模式选 CBR 2 Mbps
修复
用 VBR(可变码率)或 CRF 模式

CBR 强制每帧用相同比特数,静态场景浪费带宽、动态场景不够用。VBR 或 CRF 按画面复杂度分配比特,同等画质下文件更小。CBR 仅用于直播/流媒体协议要求。

4. 音频码率设得比视频还高

错误
视频码率 1 Mbps,音频码率 320 kbps
修复
视频码率 1 Mbps,音频码率 128-192 kbps(AAC)

人耳对 128 kbps AAC 以上差异不敏感,320 kbps 的音频会吃掉 1/3 的码率预算,导致视频画质严重下降。音频用 128-192 kbps 足够,省下的比特给视频。

5. 把帧率从 60 降到 30 以为能省一半体积

错误
60 fps → 30 fps,预期文件大小减半
修复
30 fps 文件通常只比 60 fps 小 10-20%(运动场景),静态场景几乎不变

帧率减半只减少了帧数,但编码器对相邻帧做帧间预测,运动少的帧压缩率极高。真正省体积的是降码率或降分辨率,不是降帧率。

6. 用无损格式(如 PNG 序列)压视频

错误
输出格式选 PNG 序列或 TIFF 序列
修复
输出格式选 H.264(MP4)或 H.265(HEVC)

视频压缩工具的输出应为视频编码格式。PNG 序列是逐帧无损图片,体积是 H.264 的 10-50 倍,且不能直接播放。只有需要逐帧编辑时才用序列帧。

7. 对已经高度压缩的视频再次压缩

错误
把一个 2 Mbps 的 H.264 视频再压到 1 Mbps
修复
源文件码率已经很低时,直接使用原文件或仅改容器格式

有损压缩是信息丢弃过程,二次压缩会叠加失真(块效应、振铃)。从 2 Mbps 压到 1 Mbps 画质下降远大于从 20 Mbps 压到 10 Mbps。建议用原素材(相机/录屏)压缩。

8. 没注意像素宽高比(PAR)导致画面变形

错误
输入是 720×576(DVD PAL,PAR 16:15),输出设 720×576(方形像素)
修复
输出分辨率改为 768×576(保持显示宽高比 4:3),或指定 -aspect 4:3

非方形像素视频(如 DVD、DV)的存储分辨率 ≠ 显示分辨率。直接缩放会拉伸画面。工具若没自动检测 PAR,需手动设置输出分辨率或 aspect 参数。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

B = W × H × F × bpp × 1/8

变量说明

  • B — 压缩后视频码率(bps)
  • W — 视频宽度(像素)
  • H — 视频高度(像素)
  • F — 帧率(fps)
  • bpp — 每像素比特数(由CRF/码率控制决定)

示例

原始视频 1920×1080,30fps,目标 bpp=0.1(对应 CRF≈23 中等质量)。则 B = 1920 × 1080 × 30 × 0.1 × 1/8 = 777,600 bps ≈ 778 kbps。压缩后文件大小约 778 kbps × 时长(秒)/ 8 = 字节数。

适用范围

适用于 H.264/H.265 编码的恒定质量(CRF)或目标码率模式。bpp 值通常 0.05~0.3(低质量~高质量),低于 0.02 时块效应明显,高于 0.5 时收益递减。不适用于无损压缩或纯帧内编码(如 MJPEG)。

原理图

上传视频文件MP4 / MOV / AVI设置压缩参数码率 / CRF / 分辨率FFmpeg 编码本地 WASM 处理下载压缩视频保留原文件压缩信息大小 / 码率对比预览效果播放对比重试调整参数
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import subprocess
import os

# 使用 FFmpeg 压缩视频:CRF 模式 + 调整分辨率
input_path = "input.mp4"
output_path = "output_crf28_720p.mp4"

# CRF 值范围 0-51,28 为良好平衡点;分辨率设为 1280x720
cmd = [
    "ffmpeg",
    "-i", input_path,
    "-c:v", "libx264",
    "-crf", "28",
    "-vf", "scale=1280:720",
    "-c:a", "aac",
    "-b:a", "128k",
    "-y",  # 覆盖输出文件
    output_path
]

try:
    subprocess.run(cmd, check=True, capture_output=True, text=True)
    print(f"压缩完成:{output_path}")
except subprocess.CalledProcessError as e:
    print(f"FFmpeg 错误:{e.stderr}")
package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 使用 FFmpeg 压缩视频:指定码率 1Mbps + 分辨率 1280x720
	input := "input.mp4"
	output := "output_bitrate1m_720p.mp4"

	args := []string{
		"-i", input,
		"-c:v", "libx264",
		"-b:v", "1M",
		"-vf", "scale=1280:720",
		"-c:a", "aac",
		"-b:a", "128k",
		"-y",
		output,
	}

	cmd := exec.Command("ffmpeg", args...)
	if err := cmd.Run(); err != nil {
		fmt.Printf("压缩失败:%v\n", err)
		return
	}
	fmt.Printf("压缩完成:%s\n", output)
}
const { execSync } = require('child_process');
const path = require('path');

// 使用 FFmpeg 压缩视频:CRF 模式 + 指定分辨率
const input = 'input.mp4';
const output = 'output_crf23_1080p.mp4';

const cmd = [
  'ffmpeg',
  '-i', input,
  '-c:v', 'libx264',
  '-crf', '23',
  '-vf', 'scale=1920:1080',
  '-c:a', 'aac',
  '-b:a', '128k',
  '-y',
  output
].join(' ');

try {
  execSync(cmd, { stdio: 'inherit' });
  console.log(`压缩完成:${output}`);
} catch (err) {
  console.error('FFmpeg 执行失败:', err.message);
}

常见问题

7 个高频疑问

压缩后视频画质变差了,怎么调才能清楚一点?
画质下降主要由压缩参数决定。本工具提供「CRF」和「码率」两档调节:CRF 值越低画质越好(建议 18-23),码率值越高画质越好(建议原视频码率的 60%-80% 起步)。如果选择「分辨率」降档(如 4K→1080P),画质损失不可逆。建议先用 CRF=23 试压一段,如果太模糊再改小到 20 或 18。注意:CRF 模式下输出文件大小不可控,码率模式下大小可控但画质波动更大。
为什么压缩后文件反而变大了?
常见原因有两个:一是原视频本身已经是高压缩率的格式(如 H.265/HEVC),再用默认参数重编码为 H.264 时,相同画质下体积反而更大;二是选择了过高的码率(比如原视频 2Mbps,你设了 4Mbps)。解决方法是先查看原视频编码格式,如果已经是 HEVC,建议直接选择「保持原分辨率+CRF=28」试压一次。本工具后台用 FFmpeg 处理,默认输出 H.264,与 HEVC 相比体积会偏大 20%-40%。
上传的视频会不会被服务器保存?隐私安全吗?
本工具采用纯前端处理(WASM 方式),视频文件全程不离开你的浏览器——上传后直接在本地内存中用 FFmpeg.wasm 压缩,不经过任何服务器。可以断网验证:关闭网络后工具仍能完成压缩。压缩完成后页面关闭,内存立即释放。如果对隐私有更高要求,建议压缩完成后手动清除浏览器缓存(Chrome DevTools → Application → Clear storage)。
支持压缩哪些视频格式?MP4、MOV、AVI 都能压吗?
输入格式取决于浏览器对视频解码的支持。主流浏览器(Chrome/Edge/Firefox)普遍支持 MP4(H.264)、WebM、MOV(部分)、AVI(部分);不支持的格式会提示「无法解码」。输出格式目前固定为 MP4(H.264+AAC),兼容性最高。如果遇到格式不支持,建议先用格式转换工具转为 MP4 后再压缩。注意:加密视频(如 DRM 保护的 iTunes 影片)无法解码,不支持处理。
压缩 1 小时的长视频,大概需要多久?
处理时长取决于三个因素:原视频分辨率、设备性能、选择的压缩参数。以 1080P/30fps 视频为例,在普通笔记本(i5-12 代)上用 CRF=23 压缩,速度大约为 1-2 倍速(即 1 小时视频需 30-60 分钟)。如果选择「极速模式」或降低分辨率,速度可提升到 3-5 倍速。手机端因浏览器性能限制,速度会更慢。建议先试压 1 分钟片段确认参数,再处理完整视频。
压缩后视频能直接发微信或上传到公众号吗?
可以,但需注意平台限制。微信聊天发送视频上限为 1GB(建议压缩到 100MB 以内),公众号上传视频要求小于 20MB 且时长小于 1 小时。本工具压缩后默认输出 MP4 格式,兼容微信。建议压缩时选择「分辨率 720P + 码率 2Mbps」,这样画质可接受且体积通常在 50MB/10 分钟以内。如果用于视频号,建议保持 1080P 但降低码率到 3Mbps,避免平台二次压缩导致画质损失。
手机浏览器能用吗?和电脑版有什么区别?
支持手机浏览器(Chrome/Safari/Edge),但受限于手机内存和 CPU,压缩速度比电脑慢 2-4 倍,且部分旧手机(内存 < 4GB)处理 4K 视频可能崩溃。手机版功能与电脑一致:支持 CRF/码率/分辨率三档调节。建议手机上压缩短于 5 分钟的视频,长视频用电脑处理。如果手机提示「内存不足」,尝试关闭其他 App 标签页,或选择更低分辨率(如 480P)先试压。
选择 打开 +新窗口 esc关闭