1.1 明确业务需求:并发观众数、延迟要求(低延迟/秒级/超低延迟)、码率档位、是否需要转码/多码率、是否要DRM与广告插入。
1.2 列出必选项:协议支持(RTMP/RTMPS/SRT/HLS/DASH)、实时监控API、回源稳定性、全球节点分布、费用模型(带宽/请求/计时)。
2.1 申请试用或搭建开源CDN节点(例如使用Nginx+RTMP模块或本地MinIO做回源),准备测试账号和域名。
2.2 使用ffmpeg推流示例:ffmpeg -re -i input.mp4 -c:v libx264 -b:v 1500k -c:a aac -f flv rtmp://<推流域名>/live/streamkey。
3.1 新建Pull/Push域名:在控制台创建推流域名和播放域名,填写回源地址(如origin.example.com)并保存。
3.2 设置CNAME与DNS:将播放域名的CNAME指向CDN提供商的域名,DNS生效后检查解析:dig cname yourdomain。
4.1 HLS播放:播放器配置m3u8地址示例:https://play.example.com/live/streamkey.m3u8,开启跨域与Content-Type正确返回。
4.2 低延迟方案:若需要低延迟,启用Chunked-HLS或WebRTC,配置边缘转推和短分片(例如HLS分片长度0.5~1s)。
5.1 HTTPS/证书:在控制台上传证书或使用Let's Encrypt自动签发,确保证书链完整并定期更新。
5.2 鉴权策略:使用URL签名/Token鉴权,示例:在推流或播放域名前加上expire参数并生成md5签名,控制台开启鉴权后验证生效。
6.1 转码流程:在控制台配置转码模板(分辨率、码率、多码率输出),并绑定到流域名或应用上。
6.2 录制与切片:配置录制到对象存储(如S3或MinIO),设置文件切片周期和回调通知,便于点播整理与分发。
7.1 指标打点:接入播放/推流/边缘QPS、带宽、丢包率、时延等指标,输出到Prometheus或云监控。
7.2 告警策略:设置阈值(如播放失败率>2%或平均时延>3s触发告警),配置短信/钉钉/邮件通知并编写SOP。
8.1 部署自动化脚本:使用Terraform/Ansible管理CDN资源、证书、回源配置,实现一键回滚与发布。
8.2 故障演练:定期做四则演练(回源故障、节点下线、证书过期、鉴权失效),验证告警与恢复时长并调整Runbook。
9.1 按地域调整缓存策略:热门内容设置长缓存(Cache-Control max-age),实时流设置短缓存或无缓存并优化回源压缩。
9.2 流量与带宽优化:启用GZIP、Brotli(对HLS片段无效),合并小文件请求,使用边缘转码降低回源带宽。
问:如何验证推流是否成功并排查黑屏?
答:先在推流端观察ffmpeg/OBS返回状态,确认无连接错误;在CDN控制台查看流列表和带宽指标;用curl或浏览器访问m3u8,看是否能获取到m3u8和TS片段;检查回源是否404、鉴权是否生效、证书是否过期;若出现黑屏,排查转码失败、编码参数不兼容或播放器跨域问题。
问:如何做容量预估与扩容计划?
答:估算并发观众=峰值带宽/平均码率,带宽=并发*平均码率;按地域分布预测不同POP负载;与CDN厂商协商弹性扩容策略并设置自动阈值(如边缘带宽使用率>70%触发扩容);演练水平扩容过程并保留备用回源。
问:运维团队需要哪些Runbook与日常检查?
答:准备推流失败、播放异常、证书过期、鉴权失效、回源拥堵五个Runbook;日常检查项目包括证书有效期、核心指标(错误率、延迟、带宽)、告警命中率、备份与自动化任务状态;并保留回滚策略和应急联系人清单。
