🎬 第七章 流媒体开源库简介
📄 一句话概括

商业版多出来的不是协议,而是运维能力:集群、录像、后台。 扩容的第一道坎永远是带宽,不是 CPU。

📝 本节和前面几节的关系

7.4.1 讲开源版,这一节讲商业版补了什么。 7.4.3 再往外一层,看云平台怎么算成本。

一、商业版补了五件事

① 协议更全:开源版 RTSP 为主,商业版加了 RTMP 与 GB28181。 ② 管理后台:从「简单网页」变成「完整后台」。 ③ 集群级联:开源版单机,商业版支持多级级联。 ④ 录像回放:开源版没有,商业版有。 ⑤ 技术支持:从社区变成厂商。

这五件事有一个共同点:全都不是「协议」问题,而是「运维」问题。 协议开源版就够了,难的是把它稳定地跑在一千路规模上。

所以买商业版,买的其实是「出事有人管」。 这在安防这类「不能停」的场景里是很实在的价值。

二、算一算容量,看差在哪

按每路 2048 kbps 算: 50 路 100 Mbps、200 路 400 Mbps、500 路 1000 Mbps、1000 路 2000 Mbps。

千兆网实际可用约 800 Mbps:200 路还有余量,500 路就压满了。 所以一台千兆机器的实际上限在三四百路左右(要留余量)。

这解释了商业版为什么强调集群: 不是单机跑不动协议,而是网卡先满。 所以扩容的第一道坎永远是带宽,不是 CPU。

三、扩容该按什么顺序做

① 先加网卡/换万兆——最直接,成本最低。 ② 再上集群——把路数分到多台机器上。 ③ 最后才考虑优化代码——收益最小,风险最大。

这个顺序与直觉相反: 很多人第一反应是「优化代码提升单机性能」, 但媒体服务的瓶颈根本不在代码上。 改一个月代码,可能还不如换一张万兆网卡。

判断瓶颈在哪只要一条命令: 看 sar -n DEV 1 或任务管理器的网络占用。 网卡跑满就是带宽瓶颈,网卡闲着而 CPU 满才是代码瓶颈。

四、动手 Demo:商业版——多出来的是运维,不是协议

先把开源版与商业版的差别列成表,再按每路 2 Mbps 算容量。 算完就知道「为什么要集群」。

print("路数  出口 Mbps  千兆(800M)够吗")
for n in (50, 200, 500, 1000):
    mbps = n * 2048 / 1024.0
    print("%4d  %9.0f  %s" % (n, mbps, "够" if mbps < 800 else "不够"))

print()
cap = 800
per = 2048 / 1024.0
print("千兆上限约 %d 路,留三成余量后约 %d 路"
      % (int(cap / per), int(cap * 0.7 / per)))

实跑输出:

--------------------------------------------------------------------
商业版——多出来的是运维,不是协议
--------------------------------------------------------------------
**① 开源版与商业版的差别**

  项           开源版        商业版
  --------------------------------------------------
  协议支持     RTSP 为主     RTSP/RTMP/GB28181
  管理界面     简单网页      完整后台
  集群         不支持        支持级联
  录像         无            有,可回放
  技术支持     社区          厂商

**② 算一算容量,看差在哪**

  路数     每路 kbps     出口 Mbps     千兆网能用吗
  -----------------------------------------------------
  50       2048          100           能
  200      2048          400           能
  500      2048          1000          不能
  1000     2048          2000          不能

  **千兆网实际可用约 800 Mbps:200 路还有余量,500 路就压满了。**

  **这解释了商业版为什么强调集群:**
  **不是单机跑不动协议,而是网卡先满。**
  **所以扩容的第一道坎永远是带宽,不是 CPU。**

500 路就已经 1000 Mbps,千兆网压不住。 留三成余量是行业习惯,因为带宽跑满时丢包会明显上升。 所以「千兆能带 400 路」这种说法是理论值,实际报 280 路更稳。

30 秒实验

  1. 把每路码率从 2048 改成 1024,看上限翻几倍——正好翻倍,说明路数与码率是纯线性关系。
  2. 把千兆改成万兆(8000 Mbps),看上限——4000 路,这就是换网卡比优化代码划算的原因。
  3. 把余量从三成改成五成,看实际路数——更保守,但夜里高峰不会抖。

常见误区

  1. 「商业版协议更强」——协议差别不大,强的是运维。
  2. 「扩容先优化代码」——先看网卡,通常瓶颈在带宽。
  3. 「千兆能带 800 路」——按 2 Mbps 算只有 400 路理论值。
自测三问(点开对答案) 1. 商业版比开源版多哪五件事? —— **协议更全、管理后台、集群级联、录像回放、厂商支持。** 2. 为什么说扩容的第一道坎是带宽? —— **媒体服务 CPU 通常闲得很,网卡先跑满。** 3. 怎么快速判断瓶颈在哪? —— **看网卡占用**:满了是带宽瓶颈,闲着而 CPU 满才是代码问题。

相关笔记