📄 一句话概括
串流地址前缀只说明协议,真正决定延迟的是它怎么切片、怎么缓冲——HLS 延迟高不是因为协议慢,是因为它把流切成了几秒一片。
📝 本节和前面几节的关系
3.1.2 讲了 VLC 能做的六件事,这一节挑出【播放网络串流】细讲。
一、什么算网络串流
网络串流指的是内容不在本机、而在网络上,播放器边下边播。 和下载的区别是:下载要等完,串流要边看边来。 这就是【缓冲】存在的理由——先攒一小段,边放边补。
二、看前缀能知道什么
rtmp://——直播推流常用,基于 TCP,延迟 1~3 秒。 rtsp://——监控与点播常用,可走 TCP 或 UDP,延迟 1~2 秒。 http://...m3u8——HLS,跨平台点播首选,延迟 5~30 秒。 http://(HTTP-FLV)——网页直播常用,延迟 2~5 秒。 udp://——UDP 裸流,局域网试验用,延迟最低但不抗丢包。
三、延迟为什么差这么多
决定延迟的不是协议本身的速度,而是它怎么切片、怎么缓冲。 HLS 把所有流派切成了 2~10 秒一片的小文件,播放器至少要攒一到两片才能开始。 所以 HLS 延迟高是设计取舍的结果——它用延迟换来了兼容性与抗丢包能力。 反过来,WebRTC 延迟能做到 100 毫秒以内,代价是复杂度陡增。
四、用 VLC 验证一条流
VLC 打开串流很简单:媒体 → 打开网络串流 → 粘贴地址。 如果放不出来,按这个顺序查:地址对不对 → 网络通不通 → 服务端有没有推流。 这是最省时间的排查顺序——先排最简单的原因。
五、动手 Demo:串流地址里藏着什么信息
一个 URL 的前缀就说明了协议、传输方式和大致用途。
schemes = [
("rtmp://", "RTMP", "TCP", "1~3 秒", "直播推流"),
("rtsp://", "RTSP", "TCP/UDP", "1~2 秒", "监控、点播"),
("http://", "HTTP-FLV", "TCP", "2~5 秒", "网页直播"),
("http://", "HLS(.m3u8)", "TCP", "5~30 秒", "跨平台点播"),
("udp://", "UDP 裸流", "UDP", "< 1 秒", "局域网试验"),
]
for s, proto, trans, delay, use in schemes:
print("%-9s %-11s %-8s %-9s %s" % (s, proto, trans, delay, use))
实跑输出:
--------------------------------------------------------------------
串流地址里藏着什么信息
--------------------------------------------------------------------
一个 URL 的前缀就说明了协议、传输方式和大致用途。
前缀 协议 传输层 典型延迟 典型用途
---------------------------------------------------------------
rtmp:// RTMP TCP 1~3 秒 直播推流
rtsp:// RTSP TCP/UDP 1~2 秒 监控、点播
http:// HTTP-FLV TCP 2~5 秒 网页直播
http:// HLS(.m3u8) TCP 5~30 秒 跨平台点播
udp:// UDP 裸流 UDP < 1 秒 局域网试验
看前缀能判断的只有【协议】;**真正决定延迟的是这个协议怎么切、怎么缓冲。**
HLS 延迟高不是因为协议慢,是因为它**把流切成了几秒一片**。
看前缀只能判断协议;真正决定延迟的是这个协议怎么切、怎么缓冲。 HLS 延迟高不是因为协议慢,是因为它把流切成了几秒一片。
30 秒实验
- 找一个公开的测试流地址(搜索【测试 rtmp 地址】),用 VLC 打开它。
- 观察它多久开始出画面——这个时间就是它的实际延迟量级。
常见误区
- 以为延迟高是网速不够。多半是协议切片的取舍。
- 把 HLS 当成【更高级】的协议。它只是更兼容,延迟反而更大。
- 放不出来就先怀疑 VLC。按【地址→网络→服务端】的顺序查。
自测三问(点开对答案)
1. 串流和下载的本质区别是什么? —— 下载要等完,串流边看边下。 2. HLS 延迟为什么比 RTMP 高? —— 它把流派切成几秒一片的小文件,播放器要攒够几片才能开始。 3. VLC 放不出串流时按什么顺序排查? —— 地址对不对 → 网络通不通 → 服务端有没有推流。- ☐ 下一节(3.1.4 VLC作为流媒体服务器)
相关笔记
- VLC的功能列表 — 它还能干什么
- VLC作为流媒体服务器 — 反过来把内容推出去
- 🌐 计算机网络 · 索引 — 协议与传输的底层
- 🎬 FFmpeg入门详解 · 索引