公众号旧文
油管把一个视频保存几十个版本,不浪费吗?
很多人第一次用 yt-dlp,看见一个视频能列出几十个 format,都会产生一个直觉:
一个视频保存这么多版本,不浪费存储空间吗?
答案是:
不仅不浪费,而且这是YouTube能支撑全球播放的核心设计。
下面这篇文章,我们不从用户视角,而是从流媒体底层架构,把这件事一次讲透。
一、直觉里的浪费,其实是误会
从表面看,一个视频可能同时存在:
- 2160p / 1440p / 1080p / 720p
- 30fps / 60fps
- AVC / VP9 / AV1
看起来就像:
一个视频 × 十几种版本 = 磁盘爆炸
但这其实是用「本地文件思维」去理解「流媒体系统」,本身就错位了。
二、第一层关键设计:视频和音频是完全分离的
你用 yt-dlp 时一定见过这种情况:
401:只有视频,没有声音
251:只有音频,没有画面
这是因为 YouTube 采用的是DASH(动态自适应流媒体)架构。
这意味着什么?
❌ 不存在“4K60 + 音频”的完整文件
✅ 只有:
多条视频轨(不同分辨率 / 帧率 / 编码)
少数几条音频轨(Opus / AAC)
一条音频轨,可以服务:
720p / 1080p / 4K / 4K60
音频只存一次,就能复用给所有视频规格。
仅这一点,就已经省掉了大量空间。
三、第二层关键设计:不是“存文件”,而是“存切片”
YouTube 实际存的,并不是完整视频文件,而是类似这样的结构:
video_401/
├── seg_0001.m4s
├── seg_0002.m4s
├── seg_0003.m4s
每一段切片的特点
时长通常只有2~5秒
可以独立请求
可以独立缓存
可以独立失效
这带来什么好处?
拖动进度条不卡:只加载目标时间段
CDN缓存命中率极高:热门前 30 秒全球缓存
容错能力强:坏一段不影响整条视频
所以,看起来是很多版本,
但本质上是:
一套可以随意组合的积木,而不是一堆完整成品。
四、第三层关键设计:多编码不是浪费,而是硬件分流
很多人会问:
同一个4K60,为什么还要存AVC、VP9、AV1?
答案是:不同设备,只认不同编码。
| 用户设备 | 实际使用的编码 |
|---|---|
| 老电视 / 老安卓 | AVC (H.264) |
| 2018–2022 年设备 | VP9 |
| 新显卡 / 新手机 | AV1 |
关键点在这里:
同一个用户,只会用其中一条轨道。
不存在同一个人反复浪费带宽的问题。
YouTube 做的,只是为不同硬件世代准备最合适的一条路。
五、第四层关键设计:格式不是永久保存,而是按热度晋级
你可能不知道的是:
不是所有视频,都会长期保留所有格式。
大致逻辑是:
| 视频热度 | 通常保留的规格 |
|---|---|
| 冷门视频 | 1080p AVC |
| 中等热视频 | 1440p / VP9 |
| 热门视频 | 4K / VP9 |
| 顶流内容 | 4K60 / AV1 |
也就是说:
AV1是“需要资格”的
能看到 4K60 AV1,本身就说明视频权重不低
YouTube 并不是对每个视频都无脑堆满规格。
六、反直觉但真实:多版本反而更省带宽
假设一个极端情况:
YouTube 只存 4K
你用手机看 1080p
那服务器就必须:
4K → 实时转码 → 下采样 → 发送
这在全球规模下,算力和带宽都会直接爆炸。
现在的做法是:
服务器直接给你1080p VP9
无需转码
CDN 高命中
这比只存一个版本省得多。
七、为什么 yt-dlp 看起来乱?
因为:
yt-dlp 展示的是「机器可用的所有构件」
而不是:
「给某一个人准备的最终成品」
八、一句话总结
YouTube不是在存很多视频而是在存一个视频的所有未来可能性
而当你开始自己看format、选编码、比帧率时——
你已经站在了懂行的人那一侧。
如果你看到这里,会发现:yt-dlp不是下载工具,而是YouTube底层的一扇后门。