
1.
- 直播 CDN = 为实时流媒体提供分发、缓存和协议适配的网络服务。
- 从开发者角度:它把主播推送到的源(Origin)流在全球边缘节点缓存并转发给观众,减少源站带宽、提高并发与可用性、降低延迟(取决于协议与配置)。
- 关键组件:采集端(推流)、源站/转码、CDN 边缘(拉流/缓存)、播放端(HLS/FLV/WebRTC)。
2.
- RTMP:常用于主播到源站的推流(兼容性好),CDN 常做 RTMP 采集或转 HLS。
- HLS/DASH:面向播放端的主流协议,适合大并发,延迟通常 >=3s(普通 HLS)。
- WebRTC:端到端低延迟(<1s),适合互动场景,但部署与成本更高。
- SRT/RTSP:用于高质量/受控网络环境的传输,可与 CDN 结合用于回传/链路优化。
3.
- 主播推流 -> 源站/转码(可选) -> CDN 边缘缓存/协议转换 -> 观众拉流。
- 可选组件:负载均衡、鉴权(签名 URL)、防盗链、回源加速、录制存储与转码服务。
- 接入模式:push 模式(主播推到 CDN)或 pull 模式(CDN 从源站拉流)。
4.
- 购买或使用提供的播放域名,准备 CNAME:将播放域名 CNAME 到 CDN 提供的域名(示例:play.example.com -> provider.cdn.net)。
- SSL:为播放域名配置证书(CDN 控制台上传或使用 CDN 的通配证书);WebRTC/HTTPS 播放要求完整 TLS。
- DNS 生效后可通过 dig/nslookup 验证解析到 CDN 边缘 IP。
5.
- 步骤 1:准备 ffmpeg(常用命令行工具)。
- 步骤 2:拿到 CDN 给定的推流地址(rtmp://push.cdn.net/app/streamKey)。
- 步骤 3:执行示例命令:
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 2500k -c:a aac -ar 44100 -b:a 128k -f flv "rtmp://push.cdn.net/app/streamKey"
- 步骤 4:在 CDN 控制台开启转封装(如 HLS, FLV),并检查推流状态与日志(部分 CDN 提供 API)。
6.
- HLS 普通播放:播放地址通常为 https://play.example.com/app/streamKey.m3u8,直接在 video.js 或浏览器 native 支持播放。
- 低延迟 HLS:启用 CDN 的 LL-HLS 功能并在打包端开启 chunked 和 faster playlist 更新;播放器选择支持 LL-HLS 的实现。
- WebRTC:如果需要 <1s 延迟,使用 CDN 的 WebRTC 服务或自建 SFU,播放端用浏览器的 RTCPeerConnection 接入。
7.
- 推流检查:使用 ffprobe 或 ffmpeg -i rtmp://... 查看流信息。
- 播放调试:curl -I 播放 URL 检查 200/404/302;使用浏览器控制台或 HLSJS 的 debug 模式观察 playlist 请求与分段延迟。
- 鉴权测试:对接签名 URL,验证过期时间与防盗链逻辑;若使用 IP 白名单,测试不同节点访问情况。
8.
- 问:Push 模式(主播直接向 CDN 推)与 Pull 模式(CDN 从源站拉)各有什么优劣,应如何选择?
- 答:Push 模式适合主播不想搭建公开公网 origin 的场景,延迟控制更简单;Pull 模式适合已有稳定 origin(例如自建流媒体服务器),便于统一管理回源与流转。若关注成本与安全,优先使用 Push;若已有转码/录制在源,考虑 Pull。
9.
- 问:开发者如何快速实现播放端防盗链,防止非授权访问流地址?
- 答:常用做法是签名 URL(在 CDN 控制台或通过后端生成带过期时间与哈希的播放链接),配合 Referer/IP 限制与 token 校验。实现步骤:后端生成签名 -> 返回给前端 -> 前端用签名 URL 请求 m3u8;CDN 在边缘校验签名并拒绝非法请求。
10.
- 问:上线后怎样验证 CDN 直播质量(延迟、丢包、并发)?
- 答:搭建验收流程:用脚本/压力工具并发拉流测试带宽与并发阈值;采集延迟指标(从推流端时间戳到播放端呈现延迟),使用 ffprobe/MediaInfo 检查分辨率与码率;启用 CDN 提供的监控(QPS、带宽、错误率、边缘分布)并设置告警。必要时做跨区域测试以保证全球展现一致性。