1.
选择台湾云与实例规格
- 说明:选用台湾节点以降低本地用户延迟,推荐 Google Cloud asia-east1 或 AWS/腾讯云在台湾的可用区域。
- 操作:创建 VM(Ubuntu 22.04),CPU 8-16 核,内存 32-64GB,SSD 盘 200GB;网络带宽根据并发估算(例如1000并发每路1Mbps需1Gbps)。开通公网弹性IP与防火墙规则(允许 80/443/1935/8000-9000/3478 UDP)。
2.
环境准备与依赖安装
- 更新系统:sudo apt update && sudo apt upgrade -y。
- 安装必要工具:sudo apt install -y git build-essential cmake nginx ffmpeg certbot docker.io docker-compose redis-server。
- 建议:使用 Docker 部署媒体服务以便扩展。
3.
部署低延迟媒体服务器(SRS 示例)
- 获取源码并编译:git clone https://github.com/ossrs/srs.git && cd srs/trunk && ./configure --with-http-server --with-hls --with-librtmp && make -j$(nproc)。
- 基本配置(/usr/local/srs/conf/srs.conf):启用RTMP、HTTP、HLS、RTC,示例片段:listen 1935; http_server on; http_stream on; rtc_server on; 对照 SRS 文档开启 webrtc。
- 启动:./objs/srs -c conf/srs.conf。
4.
配置 WebRTC 与 TURN/STUN
- STUN:可使用公有 stun:stun.l.google.com:19302。
- TURN(必要时穿越NAT并保证稳定):部署 coturn;apt install coturn,配置 /etc/turnserver.conf,启用 TLS 并与域名绑定。
- 在 SRS 中配置 rtc 帐户与证书,确保证书由 Let’s Encrypt 自动续期(certbot renew)。
5.
OBS 推流与 ffmpeg 转码
- OBS 配置:流类型自定义 RTMP,URL: rtmp://your_ip/live,流密钥: stream1。
- 使用 ffmpeg 做实时转码并生成 HLS/CMAF 以支持低延迟与多码率:示例命令:ffmpeg -i rtmp://localhost/live/stream1 -c:v libx264 -preset veryfast -g 48 -b:v 1500k -c:a aac -f hls -hls_time 2 -hls_list_size 3 -hls_flags delete_segments+append_list /var/www/html/hls/stream1.m3u8。
- 若需更低延迟(<1s),优先使用 WebRTC 推流/播放或 CMAF chunked HLS 配合 CDN。
6.
VOD 存储与点播配置
- 点播文件管理:将录制内容或切片上传到对象存储(如 Google Cloud Storage 或 S3 兼容存储),并在 Nginx 或 CDN 上发布静态 HLS/DASH 清单。
- Nginx 配置示例:将 /var/www/html 指向 HLS 输出目录,配置缓存控制,提高并发读取效率。录制可在 SRS 中开启 on_play/on_publish 回调,把流转存为 mp4。
7.
使用CDN与边缘缓存降低台湾本地延迟
- 将 HLS/DASH、CMAF、WebRTC 信令接口通过 CDN(如 Cloudflare、Akamai、百度)做静态分发;设置短缓存(例如2s)以降低延迟同时减轻源站压力。
- CDN 配置注意:开启 HTTP/2、TLS、GEO 路由并在台湾 POP 优化连接。
8.
高并发扩展与负载均衡
- 水平扩展:使用 Kubernetes 或 Docker Swarm 部署多个 SRS/转码容器,前置负载均衡(NGINX 或云 LB)做 RTMP/WebRTC 路由。
- 会话与状态:将会话、鉴权信息放到 Redis;使用一致性哈希或基于会话粘滞的 LB 策略。
- 自动扩缩容:监控带宽/CPU/连接数,配置 autoscale 策略,遇突发流量可以临时加实例。
9.
监控、性能调优与安全
- 监控:部署 Prometheus + Grafana 采集 SRS/ffmpeg/Nginx 指标,关注并发连接、丢包率、编码延迟。
- 优化:使用 TCP BBR、调整 socket buffer(/etc/sysctl.conf),开启 nginx 的 sendfile、tcp_nopush。
- 安全:用 HTTPS 强制流量,RTMP 鉴权、签名地址+短时 token,限制推流白名单和频率。
10.
问:在台湾云上如何保证低延迟优先选择 WebRTC 还是 HLS?
- 答:WebRTC 可实现端到端延迟 <1s,适合互动场景;HLS(尤其 CMAF chunked)延迟可降至2-3s,适合直播大量观众与 CDN 分发。结合两者:用 WebRTC 支持互动通道,HLS/CMAF+CDN 做大规模分发。
11.
问:如何估算并发与带宽需求并进行成本控制?
- 答:估算公式:并发乘以平均码率(例如1Mbps)得出总入口带宽,再加冗余20%。通过多码率自适应(ABR)和 CDN 分层缓存大幅降低源站出站流量,结合按需开关转码节点控制成本。
12.
问:遇到台湾本地用户延迟波动该如何排查?
- 答:先检查网络路径(mtr/traceroute)与丢包;查看 SRS/ffmpeg 日志与监控指标(编码时延、RTT);若 CDN 呈现问题,切换邻近 POP 或调整缓存策略;必要时增加边缘节点或使用专线/加速服务。
来源:如何在台湾云媒体服务器上搭建低延迟直播与点播系统实现高并发