1. 目标与准备工作
目标说明:在美国高带宽环境中稳定对外直播并实现多线路冗余。
准备清单:直播平台账号(如AWS MediaLive、Mux、Wowza或自建AWS EC2+NGINX)、域名、SSL证书、编码器(OBS/FFmpeg)、测试受众。
2. 选择平台与CDN策略
策略要点:主用美国云节点+多地区CDN分发(CloudFront、Fastly、Akamai)。
操作步骤:在平台创建流输入(RTMP/SRT),配置输出到CDN节点并开启缓存与边缘加速,设置地理路由。
3. 编码器配置(分辨率与码率)
建议配置:主码流1080p 4500-6000kbps,备用720p 2500kbps,音频128kbps。
实践步骤:OBS/FFmpeg设置码率、GOP(2s)、preset(veryfast),并启用CBR或VBR+maxrate。
4. 多线路推流核心思路
思路:同时推送到多个入口(主RTMP、备RTMP、SRT)实现网络/平台冗余。
要点:不同协议互补(RTMP普遍,SRT低延迟且抗丢包,RTMPS加密)。
5. FFmpeg 实操命令(同时推送示例)
示例命令:ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 4500k -maxrate 5000k -bufsize 9000k -g 48 -c:a aac -b:a 128k -f flv rtmp://primary/live/stream -f flv rtmp://backup/live/stream
说明:使用 -re 模拟实时,多个 -f flv 可并发推送到多目标。
6. SRT 推流示例与参数
SRT 推流:ffmpeg -re -i input.mp4 -c copy -f mpegts "srt://srt-server:port?mode=caller&peer_timeout=10000&latency=200"
参数说明:latency 控制延迟,peer_timeout 控制检测断线,SRT更适合跨大陆不稳定线路。
7. NGINX-RTMP 自建入口配置示3
nginx.conf 示例:rtmp { server { listen 1935; application live { live on; record off; push rtmp://backup/live; } } }
说明:使用 push 实现转发到备流,结合exec_ffmpeg可做转码或多码率分发。
8. SSL/RTMPS 与安全策略
步骤:为域名申请证书(Let's Encrypt),在 nginx 或负载均衡配置 RTMPS(TLS)。
要点:平台接入时优先使用 RTMPS,保护流密钥并定期轮换。
9. DNS、负载均衡与GeoDNS
操作:将域名指向全局负载均衡器(AWS ELB/Cloudflare Load Balancer),配置健康检查与故障转移策略。
Geo策略:根据观众地理位置将流量导向最近的边缘节点以降低延迟。
10. 监控、告警与自动切换
监控项:推流带宽、丢包、延迟、CPU/内存、观众播放失败率。
实现:使用Prometheus+Grafana或平台自带监控,设置阈值触发Webhook自动切换主备流。
11. 测试流程与验收步骤
测试清单:单路推流、双路并发、模拟主链路中断、不同带宽下播放、跨大陆延迟测试。
验收:主流切换时间<5s、观众卡顿率下降到阈值内、日志无异常错误。
12. 运维注意事项与成本优化
注意:监控费用、出网带宽费用与CDN费用;定期清理录制文件与缩放实例。
优化:使用多码流+边缘转码减少传回源的带宽,按需自动扩缩容。
13. 问:如何在OBS中一次性推到主备两个RTMP地址?
回答:在OBS可通过插件“Multiple RTMP Output”或使用本地FFmpeg中转。安装插件后在设置中添加两个输出URL并启用;若用FFmpeg,OBS推本地RTMP至nginx,再由nginx push到多个远端。
14. 问:SRT比RTMP的实际好处是什么,何时必须使用?
回答:SRT在丢包、抖动大的公网环境下更稳定、延迟可控,适合跨洲直播或高丢包场景;若对延迟和可靠性要求高应优先考虑SRT。
15. 问:如何做自动故障切换,主流挂掉观众无感知?
回答:实现步骤:1) 多线路并行推流(主+备);2) 平台或负载均衡设置健康检查并启用流量自动切换;3) 本地边缘做短连接重试与回退;4) 监控触发Webhook通知并记录切换日志,确保切换时间小于播放器缓冲。
来源:美国大带宽直播平台与多线路推流最佳实践分享