快速结论
- 最小配置(100 人同时在线):2 核 4GB 服务器 + CDN,月成本 ¥500-1000
- 中级规模(10000 人):8 核 16GB + 转码服务 + CDN,月成本 ¥3000-5000
- 大型平台(100 万人):多服务器 + 流媒体 PaaS + 全球 CDN,月成本 ¥50000+
- 核心成本:CDN 流量费占 60-80%,服务器占 10-20%,转码占 10-30%
- 技术方案:推荐用云厂商的媒体服务,别自建(难度大,成本高)
CDN 是直播成本的大头,各家的加速方案与计费差异见 CDN 加速对比;带宽档位怎么选见带宽选择指南。
直播平台的技术架构
系统由五个部分组成
┌─────────────────────────────────────────────────────┐
│ 观众端客户端 │
│ (iOS/Android/Web 播放器) │
└──────────────┬──────────────────────────────────────┘
│ RTMP/HLS 拉流
↓
┌─────────────────────────────────────────────────────┐
│ CDN(内容分发网络) │
│ (阿里云 CDN / 腾讯云 CDN 等) │
└──────────┬─────────────────────────────┬─────────────┘
│ 边界节点回源 │ 多地缓存
↓ ↓
┌─────────────────────────────┐ ┌─────────────────┐
│ 源站(Application Server) │ │ 转码服务 │
│ (验证/计费/弹幕等逻辑) │ │ (MP4/HLS格式) │
└─────────────────────────────┘ └─────────────────┘
↑
│ RTMP 推流
│
主播端
(OBS/FFmpeg)各环节的作用
- 推流端(主播):
- 采集摄像头/屏幕
- 编码(H.264/H.265)
- 通过 RTMP 推到服务器
- 源站服务器:
- 接收推流
- 进行直播认证、计费
- 管理房间和弹幕
- 转发到 CDN
- 转码服务:
- 将原始流转换为多个码率(清晰/标清/流畅)
- 输出多种格式(RTMP/HLS/DASH)
- 这是最耗 CPU 的环节
- CDN:
- 缓存转码后的流
- 在靠近用户的节点分发
- 成本最大的环节
- 播放端(观众):
- 从 CDN 拉流
- 本地解码播放
- 发送互动信号(弹幕、送礼)
成本构成详解
费用公式
月成本 = 服务器费 + CDN 流量费 + 转码费 + 存储费 + 其他示例计算(5000 人同时在线):
服务器费用:
- 16 核 32GB 云服务器 × 2 台(一主一备)= ¥2400/月
CDN 流量费:
- 直播总参与人数:10000(日活)
- 平均观看时间:1.5 小时
- 直播码率:2Mbps(标清 1Mbps + 清晰 1Mbps)
- 日流量:10000 × 1.5 小时 × 3600s × 2Mbps / 8 = 1350 GB/天
- CDN 费用:1350 GB × 30 天 × ¥0.24/GB = ¥9720/月
转码费:
- 转码时长:10000 人 × 1.5 小时 = 15000 小时/天
- 转码费:15000 × 30 × ¥0.5/小时 = ¥225000/月(太贵!)
方案优化:
- 不转多码率,只提供单一码率(减少 70% 转码成本)
- 使用硬件转码而非软件转码(成本 ÷ 3)
- 用户网络好时自适应码率(减少重复转码)
优化后成本:
服务器:¥2400
CDN:¥9720
转码(硬件,1 个码率):¥25000
存储(回放录制):¥5000
总计:¥42120/月三大成本优化策略
1. CDN 成本优化(占比最大)
策略 A:多 CDN 联动
- 阿里云 CDN:¥0.24-0.35/GB
- 腾讯云 CDN:¥0.25-0.40/GB
- 自建 CDN 节点(超大规模):¥0.15/GB
成本对比(100TB/月 流量):
| CDN | 费用 |
|---|---|
| 单个商用 CDN | ¥24000-35000 |
| 多 CDN 联动 | ¥18000-25000(省 30%) |
| 自建 CDN | ¥15000(但需投入 ¥100万+ 基础设施) |
实战建议:
- <10TB/月:用单个 CDN(管理简单)
- 10-100TB/月:2-3 个 CDN 联动
- 100TB+/月:考虑自建边缘节点
2. 转码成本优化(第二大成本)
选择硬件转码:
- 硬件转码(GPU):¥0.1-0.2/小时
- 软件转码:¥0.5-1.0/小时
- 硬件便宜 5 倍
转码参数优化:
原始配置:H.264 编码 + 3 个码率(1080p/720p/360p)转码
优化配置:只转 2 个码率(720p/360p)
成本降低:66%
或使用云厂商"直播转码优惠包":
购买 1000 小时包 = ¥800(单价 ¥0.8/小时)
vs 按量计费 = ¥1000(单价 ¥1/小时)
省 20%H.265 编码:
- 压缩率更高(文件 50% 更小)
- CDN 成本 ÷ 2
- 代价:客户端兼容性问题(老设备可能不支持)
- 推荐:用 H.265 + H.264 双编码(多转码,单次便宜)
3. 服务器成本优化
不要自建服务器,用云厂商的直播 PaaS:
- 阿里云直播:自动扩缩容,无需预配
- 腾讯云直播:集成转码、截图、鉴黄等
- 费用:更贵初期(比自建 20-50%),但省运维成本
如果坚持自建,架构这样设计:
推流负载均衡(LB)
↓
推流服务器集群(8 核×N 台)
↓
源站聚合服务器(转发到 CDN)
↓
CDN 节点(分发)按规模推荐配置
Level 1:测试环境(10-100 人)
架构:
单机:2 核 4GB
CDN:1 个节点
转码:无(直接推原始流)成本:¥200/月(服务器)+ ¥50/月(CDN)= ¥250/月
配置步骤:
- 购买 2 核 4GB 云服务器
- 安装 Nginx + RTMP 模块
- 配置 HLS 输出
- 接入 CDN
Level 2:小型直播(100-1000 人同时)
架构:
推流服务器:4 核 8GB × 1
源站服务器:4 核 8GB × 1
转码服务器:GPU 主机 × 1(可选)
CDN:阿里云/腾讯云成本分解:
| 项目 | 费用 |
|---|---|
| 服务器 | ¥500/月 |
| CDN(2TB/月 流量) | ¥500/月 |
| 转码(可选) | ¥1000/月 |
| 总计 | ¥2000/月 |
部署方案:
- 推流用 SRS(开源流媒体服务器)
- 转码用 FFmpeg + GPU 加速
- CDN 自动回源推流服务器
代码示例(SRS 配置):
server {
listen 1935;
rtmp {
allow publish 127.0.0.1;
allow publish 10.0.0.0/8;
deny publish all;
allow play all;
}
}
http {
server {
listen 8080;
location /live {
hls on;
hls_path /tmp/hls;
}
}
}Level 3:中型平台(1000-10000 人)
架构:
推流负载均衡
├─ 推流服务器 × 3 (8核 16GB)
├─ 源站服务器 × 2 (8核 16GB)
├─ 转码集群 × 2 (GPU 主机)
└─ CDN:多地域成本分解:
| 项目 | 费用 |
|---|---|
| 服务器 | ¥3000-4000/月 |
| CDN(20TB/月) | ¥5000/月 |
| 转码(硬件) | ¥8000/月 |
| 存储/其他 | ¥1000/月 |
| 总计 | ¥17000-19000/月 |
技术要点:
- 推流负载均衡:DNS 权重轮询或 SLB
- 转码集群:用专业 GPU 服务器(NVIDIA Tesla P100+)
- CDN 联动:至少 2 个 CDN,流量智能分配
- 监控告警:Prometheus + Grafana 监控实时流状态
Level 4:大型平台(10000-100 万人)
架构(全球部署):
全球多地推流集群
├─ 亚洲 CDN + 服务器集群
├─ 欧洲 CDN + 服务器集群
└─ 美洲 CDN + 服务器集群
转码集群(3 地部署,隔离故障域)
云对象存储(录制回放)成本分解:
| 项目 | 费用 |
|---|---|
| 全球服务器 | ¥20000/月 |
| 全球 CDN(500TB+/月) | ¥100000+/月 |
| 转码服务 | ¥30000/月 |
| 存储 | ¥10000/月 |
| 总计 | ¥160000+/月 |
必需的专业工具:
- 多 CDN 管理平台
- 实时流媒体集群架构
- DBA 团队(数据库复制)
- 24/7 运维团队
推拉流协议选择
RTMP vs HLS vs DASH vs HTTP-FLV
| 协议 | 延迟 | 兼容性 | 成本 | 用途 |
|---|---|---|---|---|
| RTMP | <1s | ★★★ | 低 | 推流端首选 |
| HTTP-FLV | <1s | ★★ | 低 | PC 端直播 |
| HLS | 5-10s | ★★★★★ | 低 | 所有端(推荐) |
| DASH | 3-5s | ★★★★ | 低 | 高端设备 |
推荐方案:
- 推流端:RTMP(所有客户端都支持)
- 播放端:HLS(兼容性最好)+ HTTP-FLV(低延迟)双协议
关键参数配置
码率设置
根据不同场景选择:
| 清晰度 | 推荐码率 | CPU 占用 | 带宽占用 |
|---|---|---|---|
| 超清(1080P) | 3-5Mbps | 高 | 2-3M 带宽 |
| 清晰(720P) | 1.5-2Mbps | 中 | 1-2M 带宽 |
| 标清(480P) | 500-800Kbps | 低 | 500K-1M |
| 流畅(360P) | 300-500Kbps | 低 | 300-500K |
推荐设置:
- 主播上行网络:10Mbps+(保证 1080P 不卡顿)
- 自适应码率:根据观看端网络自动选择清晰度
- 备选码率:提供 3-4 个等级(1080P/720P/480P/360P)
分辨率与帧率
| 场景 | 推荐分辨率 | 帧率 | 说明 |
|---|---|---|---|
| 游戏直播 | 1920×1080 | 60fps | 高刷新,需要高 CPU |
| 秀场直播 | 1280×720 | 30fps | 画质与CPU 平衡 |
| 教学直播 | 1024×576 | 30fps | 清晰度足够,成本低 |
| 手机直播 | 720×480 | 30fps | 移动网络友好 |
实时互动功能的成本
弹幕系统
方案 A:自建(推荐小平台)
- 消息队列:Redis ¥500/月
- Web Socket 服务器:2 核 × 2 台 ¥400/月
- 总成本:¥900/月
- 并发支持:50000 人
方案 B:云厂商 API(推荐大平台)
- 腾讯云 IM:¥99 基础版(支持 100 人群组)
- 阿里云 IMServer:按消息量计费 ¥0.1/1000 条
- 成本:¥100-1000/月(取决于活跃度)
送礼/打赏系统
系统构成:
- 金币充值:支付宝/微信 API ¥0(固定费率 0.6%)
- 虚拟币存储:RDS 数据库 ¥600/月
- 行为记录:ELK 日志系统 ¥500/月
- 反欺诈检测:风控 API ¥2000/月
总成本:¥3100/月 + 交易手续费
监控与故障处理
指标上报、告警通道与排障流程可参考服务器监控指南。
关键监控指标
| 指标 | 告警阈值 | 处理方案 |
|---|---|---|
| 推流延迟 | >2s | 检查主播网络/增加 CDN 节点 |
| 观看卡顿率 | >5% | 增加转码码率/调整 CDN 策略 |
| 服务器 CPU | >80% | 水平扩展/优化转码参数 |
| CDN 回源率 | >30% | 增加 CDN 节点/提高缓存时间 |
| 平均转码延迟 | >10s | 添加转码服务器 |
高可用架构
推流端主备切换:
在 DNS 中配置 2 个推流地址
主服务器故障,自动切换到备用
用户无感知(重连时间 <3s)
CDN 多地部署:
至少 3 个地域
故障自动转移
成本 +20% 获得 99.9% 可用性
数据库主从复制:
推荐配置:1 主 2 从
防止单点故障导致数据丢失常见坑点与解决方案
坑 1:直播卡顿,用户投诉
原因排查:
- 主播网络太差(最常见) -> 告知主播提升网速
- 服务器转码堆积 -> 增加转码机器
- CDN 回源失败 -> 检查源站连通性
- 观众网络差 -> 自动降清晰度
解决方案代码(JavaScript 播放器自适应):
let bandwidth = 0;
setInterval(() => {
let newBandwidth = player.currentTime / player.videoDuration * 8; // Mbps
if (newBandwidth < 1) {
player.switchQuality('360p');
} else if (newBandwidth > 3) {
player.switchQuality('720p');
}
}, 5000);坑 2:CDN 账单爆炸
原因:
- 直播流被盗链(爬虫拉流)
- 用户在 CDN 节点长时间离线(占用连接但不拉流)
- 转码多码率导致流量倍增
防护措施:
- IP 白名单:只允许特定来源推流
- Referer 防盗链:只允许网站域名播放
- Token 鉴权:每条流生成短期 Token,过期自动失效
- CDN 智能缓存:设置较短的 TTL(5-10 分钟),减少冷源回源
代码示例(生成带签名的 CDN URL):
import hashlib
import time
def generate_cdn_url(stream_id, secret_key, expire_time=3600):
timestamp = int(time.time()) + expire_time
auth_string = f"{stream_id}-{timestamp}-{secret_key}"
auth_hash = hashlib.md5(auth_string.encode()).hexdigest()
return f"https://cdn.example.com/live/{stream_id}?auth={auth_hash}&time={timestamp}"坑 3:转码队列堆积
症状:
- 主播推流后,观众要等 30+ 秒才能看到直播
- 转码 CPU 接近 100%
解决方案:
- 增加转码服务器(扩展转码容量)
- 使用硬件转码(GPU)代替软件转码
- 减少转码码率数量(3 个改成 2 个)
- 实现按需转码(主播没有人观看时不转码)
成本计算器
快速估算月度成本
步骤 1:估算日活跃观众
日活 = 预期用户总数 × 留存率 × 日直播率
例:100 万用户 × 20% 留存 × 10% 日直播 = 2 万日活
步骤 2:估算总观看时长
总时长 = 日活 × 平均观看时长(小时)
例:2 万 × 1.5 小时 = 3 万小时/天
步骤 3:估算流量
流量 = 总时长 × 码率(Mbps)/ 8
例:3 万小时 × 2Mbps / 8 = 750GB/天
步骤 4:计算成本
服务器 = ¥1000-3000/月(按规模)
CDN = 流量 GB × 30 × ¥0.25/GB
转码 = 总时长 × 30 × ¥0.5/小时(可选)
存储 = 流量 × 30% 录制率 × ¥0.1/GB
示例:
服务器:¥2000
CDN:750 × 30 × ¥0.25 = ¥5625
转码:3万 × 30 × ¥0.5 = ¥45000
存储:750 × 30 × 30% × ¥0.1 = ¥675
总计:¥53300/月推荐阿里云/腾讯云直播服务
不想自建?用云厂商的直播 PaaS:
| 产品 | 优点 | 缺点 | 推荐 |
|---|---|---|---|
| 阿里云直播 | 功能全、CDN 一体化 | 贵 | 中大型平台 |
| 腾讯云直播 | 文档清晰、便宜 | 功能少 | 初创公司 |
| 华为云直播 | 便宜、国际化 | 生态差 | 成本敏感 |
云服务优势:
- 自动扩缩容(无需预配)
- 内置转码、截图、鉴黄
- 开箱即用(无需自建)
- 成本透明(按用量计费)
购买链接:
总结建议
| 规模 | 推荐方案 | 月成本 | 开发周期 |
|---|---|---|---|
| <100 人 | 云服务器 + SRS | ¥500 | 2 周 |
| 100-1000 人 | 云服务器集群 + CDN | ¥3000-5000 | 4 周 |
| 1000-10000 人 | 专业 GPU 转码 + 多 CDN | ¥20000 | 8 周 |
| 10000+ 人 | 全球分布式 + 云 PaaS | ¥100000+ | 12 周+ |
立即开始:
- 购买云服务器(2 核 4GB):https://curl.qcloud.com/83FAb6Aj
- 安装 SRS 流媒体服务器
- 配置 CDN 回源
- 开发推流/播放客户端
直播平台的核心是 CDN,而不是服务器。把资源投在 CDN 优化上,获得最大的用户体验提升。