1. 流媒体基础概念:什么是流媒体、流媒体协议概览(RTMP/HLS/DASH)、音视频编解码基础
各位同学好,我是这门课的主讲。今天咱们聊聊流媒体的地基——那些你天天用、但可能没细想过的基础概念。
说实话,我刚开始接触流媒体时,也被一堆协议和编码格式搞得头大。后来踩了不少坑,才慢慢理清脉络。这一章,我就把那些最核心的东西,用大白话给你讲明白。
1.1 到底什么是流媒体?
流媒体,说白了就是「边下边播」。你不需要等整个视频文件下载完,就能直接看。这跟咱们以前用迅雷下电影不一样——下完才能看,那是「下载播放」。
我举个例子。你打开抖音刷视频,点一下就开始播了,这就是流媒体。背后是服务器不断把数据「流」到你的手机上。你看到的每一帧,都是实时到达的。
核心特征:
- 实时性:数据持续传输,用户几乎无等待
- 交互性:支持暂停、快进、回退等操作
- 适应性:根据网络状况自动调整画质
我在做第一个直播项目时,以为流媒体就是简单的「推流→拉流」。结果上线第一天,用户反馈卡成幻灯片。后来才发现,网络抖动时,播放器根本没做缓冲策略。嗯,这里要注意——流媒体不是「一直传数据」那么简单,它有一套完整的缓冲、丢帧、重传机制。
1.2 流媒体协议概览
协议就是「沟通的规矩」。服务器和播放器怎么握手、数据怎么打包、遇到错误怎么处理,都得按协议来。目前主流的就三个:RTMP、HLS、DASH。
1.2.1 RTMP(Real-Time Messaging Protocol)
RTMP 是 Adobe 搞出来的,当年 Flash 时代的老大哥。它基于 TCP,延迟低,适合直播推流。
我个人习惯在推流端用 RTMP,因为它稳定、延迟可控。但有个问题——它默认走 1935 端口,很多企业防火墙会拦。我曾经在客户现场折腾了一下午,才发现是防火墙把端口封了。
| 特性 | 说明 |
|---|---|
| 传输层 | TCP(可靠传输) |
| 延迟 | 1-3 秒(低延迟) |
| 适用场景 | 直播推流、互动直播 |
| 缺点 | 不支持 HTML5 原生播放,需要转封装 |
1.2.2 HLS(HTTP Live Streaming)
HLS 是苹果推出的,现在基本是点播和直播的标配。它把视频切成一个个小片段(通常是 2-10 秒),通过 HTTP 传输。播放器下载一个 m3u8 索引文件,就知道去哪拿这些片段。
你想想看,HLS 最大的好处是什么?它走 HTTP,不会被防火墙拦。而且天然支持自适应码率——网络好时播高清,网络差时自动切到低清。
避坑指南: 我曾经在 HLS 直播中遇到一个坑——切片时长设成了 10 秒,结果用户切换清晰度时,要等 10 秒才能看到效果。后来我把切片时长改成 4 秒,切换就流畅多了。但切片太短会增加服务器压力,一般 4-6 秒是比较平衡的选择。
1.2.3 DASH(Dynamic Adaptive Streaming over HTTP)
DASH 是 MPEG 组织推的标准,跟 HLS 思路类似,也是切片+HTTP。但它更开放,不绑定特定厂商。DASH 用 MPD(Media Presentation Description)文件描述视频信息,而 HLS 用 m3u8。
说实话,DASH 在 Android 和智能电视上用得比较多。HLS 在苹果生态里是亲儿子。实际项目中,我经常两个都支持——这叫「多协议兼容」。
| 对比项 | HLS | DASH |
|---|---|---|
| 标准制定 | Apple | MPEG |
| 索引文件 | .m3u8 | .mpd |
| 编码支持 | H.264/H.265 | 任意编码 |
| 浏览器支持 | Safari 原生 | 需 MSE 支持 |
1.3 音视频编解码基础
原始视频数据有多大?我算给你看:1080p 分辨率、30fps、每帧 24 位色,一秒钟的数据量大约是 1920×1080×30×3 ≈ 186MB。一部 90 分钟的电影,就是 1TB 左右。不压缩,谁也传不动。
编解码就是「压缩」和「解压缩」的过程。编码器把原始数据变小,解码器再把它还原成能看的画面。
1.3.1 视频编码标准
- H.264(AVC):目前最普及,兼容性最好。我在项目中 90% 的场景都用它。
- H.265(HEVC):压缩率比 H.264 高 50% 左右,但编码更耗性能。4K 视频首选。
- AV1:开源、免费,压缩率比 H.265 还高,但编码速度慢。适合点播场景。
注意: 编码不是越新越好。H.265 虽然压缩率高,但很多老设备不支持硬解。我曾经在项目里全上 H.265,结果用户反馈播放卡顿——CPU 软解扛不住。后来加了 H.264 降级方案才解决。
1.3.2 音频编码标准
音频相对简单。常见的有:
- AAC:流媒体标配,音质好,压缩率高
- MP3:老牌格式,兼容性极好
- Opus:开源,延迟低,适合实时通信
我个人习惯直播用 AAC,点播用 AAC 或 Opus。MP3 现在用得少了,除非要兼容老设备。
1.4 知识体系总览
下面这张图,把本章的核心知识点串起来了。你可以把它当一张「地图」,后面每学一个新概念,都能在这张图上找到位置。
1.5 本章小结
这一章,我们聊了三件事:
- 流媒体是什么——边下边播,核心是实时性和自适应
- 三大协议——RTMP 适合推流,HLS 和 DASH 适合分发
- 编解码基础——H.264 是主力,H.265 和 AV1 是未来
这些概念,后面每一章都会用到。你先把这张图记在脑子里,后面学起来会轻松很多。