一、问题背景
- 原视频:1920×1080,30 帧,时长 1 小时 49 分,视频码率约 9640kbps,总码率约 9834kbps,体积约 8GB。
- 现状:视频文件太大。使用 COS + CDN 后正常播放不卡顿,但拖拽进度条时会卡。
- 目标:缩小体积,同时让拖拽跳转流畅,并保证客户设备都能播放。
二、基础概念
1. 码率是什么
码率是每秒视频数据量,单位 kbps,数值越大画质越好、文件越大。在 Windows 文件属性的"详细信息"中:
- 数据速率:视频本身的码率(本例 9640kbps)
- 比特率:音频码率(本例 193kbps)
- 总比特率:视频加音频(本例 9834kbps)
看视频码率,要看"数据速率",不要看"比特率"。
2. 分辨率与码率的关系
- 分辨率决定画面能有多细,码率决定每个像素画得有多好。
- 分辨率越高,所需码率越高。
- 码率不足时,分辨率再高也会糊、有马赛克。
- 码率超过一定程度后肉眼看不出区别,只会浪费体积。
- 原片只有 1920 宽,选 2K、4K 模板不会更清晰,只会增加费用和体积。
3. H264 与 H265
H264(AVC)和 H265(HEVC)都是视频压缩编码标准。
- H265 压缩效率更高,同等画质下码率可省 30%~50%。
- H265 编解码更耗性能,转码更慢。
- H265 兼容性稍差,部分老设备、老浏览器、微信内置浏览器可能无法播放。
- H264 兼容性最好,几乎所有设备都能直接播放。
4. 如何确认视频编码格式
文件属性里看不到编码格式,可用以下方式确认:
- MediaInfo:查看 Video 下的 Format,AVC 即 H264,HEVC 即 H265。
- VLC:菜单"工具 → 编解码器信息"。
- ffprobe:命令
ffprobe 文件名.mp4,查看Video: h264或hevc。
三、拖拽卡顿的真正原因
拖拽卡顿主要和封装格式有关,码率是次要因素。
- HLS:视频被切成大量几秒的小分片,拖拽时要重新请求分片并等待缓冲,容易卡。HLS 更适合直播和自适应码率。
- MP4:单文件,配合 CDN 的 Range 请求,拖到哪里就从哪里开始加载,跳转快。前提是 moov 信息在文件头部(faststart),转码模板输出一般满足。
- 码率过高:拖拽后需要重新缓冲的数据量大,压低码率也有帮助。
四、模板对照(节选)
| 模板 | 分辨率 | 码率 |
|---|---|---|
| H264-MP4-高清 | 1280 | 2000 Kbps |
| H264-MP4-全高清 | 1920 | 3500 Kbps |
| H265-MP4-全高清 | 1920 | 2200 Kbps |
| H265-HLS-全高清 | 1920 | 2200 Kbps |
H264 和 H265 都同时提供 MP4、HLS、FLV(H265 为 MP4、HLS)等封装,选型时编码格式和封装格式要分开考虑。
五、最终选择与理由
选择:H264-MP4-全高清(1920,3500Kbps)
- 分辨率与原片一致,画质不浪费。
- MP4 单文件,拖拽跳转更流畅。
- H264 兼容性最好,客户设备不可控时最稳妥。
- 体积从约 8GB 降到约 3GB,明显减小。
体积估算(时长 1 小时 49 分,含音频)
- 原片:约 8GB
- H264-MP4-全高清 3500Kbps:约 3GB
- H264-MP4-高清 2000Kbps:约 1.8GB
- H265-MP4-全高清 2200Kbps:约 2GB
备选:
- 对画质要求不高(如手机观看):H264-MP4-高清(1280,2000Kbps)。
- 确认客户设备都较新、想进一步省流量:H265-MP4-全高清,上线前务必多设备测试。
六、落地注意事项
- 转码后用
<video>标签或直接 MP4 地址播放。 - 自己多次拖拽测试,确认跳转速度。
- 若仍卡,检查 COS/CDN 是否开启 Range 回源支持。
- 选 H265 时,至少在 iOS、安卓、Chrome、微信内置浏览器上各测一遍。
七、小结
- 看码率认"数据速率"。
- 分辨率和码率要匹配,不是越高越好。
- 拖拽卡顿先查封装格式(HLS 与 MP4),再查码率。
- 兼容性优先选 H264,省流量且设备新才考虑 H265。