一、先分清「卡」发生在哪一段

观看端反馈「卡顿」时,问题可能在四个完全不同的环节。定位错了段,后面所有优化都是白做。下面这张表按环节拆开,给出每一段的典型表现与可验证判据。

环节典型表现判据(怎么确认)责任方
采集与推流段 所有观看端同时卡、画面马赛克、声音断续 推流端软件显示的丢帧/码率曲线是否抖动;换一个观看端对比无差别 现场导播 / 网络
源站与转码段 某一档清晰度缺失、转码后画质下降、多码率只有一路可用 直接取源站流(绕开 CDN)播放是否正常;看转码任务状态 直播平台
CDN 分发段 只有部分地区/运营商/企业内网的用户卡,其他地区正常 按地区、运营商、接入方式分组统计卡顿率,差异明显即为此段 CDN 与服务方
终端播放段 个别用户卡、同一网络下别人正常、老机型更明显 看该设备的机型/系统/浏览器版本;换设备不复现 用户环境

本文只讲第三段——CDN 分发与加速。前两段分别见 直播延迟优化 与 码率配置指南,终端侧的排查见 播放卡顿排查。

二、CDN 调度:用户是怎么被分到某个节点的

分发质量的第一变量不是节点数量,而是调度准确度——把用户分配到离他最近、且当时不拥塞的节点。常见调度方式有三种,准确率与改造成本不同。

调度方式原理准确度与风险改造成本
DNS 调度 按 LocalDNS 的 IP 判断用户位置,返回对应节点 IP 用户 DNS 配置不当(如跨省公共 DNS)时会错判;运营商 DNS 结果对 CDN 可见性有限 零改造,默认可用
HTTPDNS App / 播放器直接用 HTTP 请求解析域名,携带真实出口 IP 准确度明显更高,能规避 DNS 劫持与跨网错判 需播放器 SDK 或 App 支持
Anycast / 边缘接入 同一 IP 在多节点通告,由路由协议把流量引到就近节点 抗突发与抗攻击能力强,调度粒度依赖网络拓扑 由服务商侧配置,接入方无感

选型时的问法很关键:不要问「你们有多少节点」,要问「跨运营商访问时的调度策略是什么、错判后怎么纠偏」。后者才有答案的区别。

另外要确认一件事:观看端是否在企业内网出口。企业内网的出口 IP 往往集中在少数几个地址,会导致大量用户被调度到同一个节点,形成人为热点。这类场景建议提前与服务方沟通,按出口 IP 做定向调度或增加节点覆盖。

三、回源:成本与稳定性的平衡点

边缘节点没有缓存内容时会向源站取流,这个过程叫回源。回源设计决定两件事:源站带宽成本,以及冷启动时的稳定性。

回源配置项说明建议
回源方式 按协议回源(RTMP / SRT / HTTP-FLV / HLS) 推流链路与回源链路分开配置,避免推流抖动直接传导到分发层
源站数量 单源站 / 主备源站 / 多源站按区域分配 大型直播建议主备;跨国或多区域观看建议多源站分区
回源带宽冗余 源站上行需要承载的节点回源并发 按峰值并发估算后留余量,切勿按平均并发配置
回源重试与超时 节点取流失败后的重试次数与超时时间 明确超时阈值;过长会让用户等一个无效连接,过短会频繁重建
缓存策略 直播切片(HLS 的 ts/m4s)在边缘的缓存时长 与切片时长对齐,避免用户取到已过期或半截切片

成本侧的经验规律:回源率越低,源站带宽成本越低,但缓存命中率依赖用户分布集中度。观看人群高度分散(如全国经销商大会)时回源率天然偏高,这是正常的,不必过度优化。

四、多码率与自适应码率(ABR)

自适应码率的思路是:同时准备多档清晰度,播放器按当前带宽自动切换,避免「带宽不够就一直缓冲」。档位不是越多越好——档位太多会让切换更频繁,反而影响观感。

档位方案档位配置适用场景
精简三档 标清(540p 及以下)/ 高清(720p)/ 超清(1080p) 会议、培训、内部沟通;终端可控、带宽充足
标准四档 流畅 / 标清 / 高清 / 超清 面向公众的发布会、经销商大会;终端差异大
含移动端低码档 在三档基础上增加一路低码率(适配弱网与 4G/5G 切换场景) 户外、展会、外场信号不稳定;观众大量使用手机流量观看
固定单档 不做转码,只保留原始档 内网私有化部署、终端统一且带宽可控;手术示教等不允许降画质的场景

两个常被忽略的点:

  • 医疗示教不建议开激进降档。术野细节是核心价值,画质下降会直接影响教学效果;内网环境通常带宽可控,宁可保画质。
  • 切换频繁比偶尔卡顿更伤体验。档位之间的码率梯度要拉开,避免播放器在两档之间来回跳。

五、秒开:首帧时间由哪些部分构成

「秒开」通常指点击播放到出现第一帧画面的时间。它由一串串行步骤组成,优化要按项拆解。

构成环节耗时来源可做的优化
域名解析 DNS 查询往返、跨网查询 使用 HTTPDNS;提前做域名预解析
连接建立 TCP 握手 + TLS 握手(HTTPS 场景) 开启连接复用;播放器预热连接
播放地址获取 业务侧鉴权、权限校验、地址下发 鉴权逻辑前置,避免在播放链路上串行等待
取流与缓冲 等待关键帧、播放器缓冲策略 服务端缓存 GOP(关键帧间隔);播放器缓冲阈值按场景调整
起播策略 播放器默认从最高档起播,取不到再降档 改为按历史带宽或中档起播,再向上适配

关键帧间隔(GOP)是首帧时间的放大器:GOP 越长,用户越可能等一个完整 GOP 才出画面。低延迟场景建议把 GOP 控制在较小值,具体取值与码率、画质要求一起权衡,不能只追秒开。

六、兼容性:特殊观看环境清单

分发方案做完,还要过一遍「用户实际在哪看」这张表。企业/医疗场景的观看环境比消费级直播复杂得多。

观看环境常见限制前置动作
微信内打开 部分协议与自动播放受限;同层播放需适配 明确微信内是否允许自动播放;准备跳转外部浏览器的兜底路径
iOS Safari 自动播放策略严格,部分低延迟协议支持不完整 优先选择通用性更好的分发协议;提前真机验证
企业内网 / 办公终端 出口代理、白名单、UDP 端口受限 确认可用协议与端口(详见 协议与端口清单)
信创 / 国产浏览器 解码能力与 H5 播放器兼容性差异大 提前拿到具体终端型号做真机验证,不要按 Chrome 结果推断
大屏投屏 / 会议一体机 分辨率与刷新率固定,缩放后画质损失明显 按大屏原生分辨率配置档位,避免拉伸

兼容性问题几乎全部可以通过提前拿到真实终端做验证规避。验收清单里应明确列出需要覆盖的终端型号,而不是「浏览器能打开就算通过」。

七、验收指标与压测方法

分发方案是否可用,要用可量化的指标验收,而不是「看着还行」。下面是一份可直接用于验收的指标表。

指标含义采集方式关注点
首帧时间 点击播放到出现画面的耗时 播放器埋点 / 拨测 按地区与网络类型分组看,别只看均值
卡顿率 卡顿时长占播放总时长的比例 播放器卡顿事件上报 分组统计,找出集中的地区与运营商
播放错误率 起播失败 / 中途断流的占比 错误码上报 区分鉴权失败、取流失败、解码失败
端到端延迟 现场发生到观看端看到的时差 时钟对照法(现场与观看端同时拍秒表) 互动场景重点关注;单向观看可放宽
码率达成率 实际播放档位与目标档位的匹配程度 播放器档位上报 档位长期偏低说明分发或终端带宽有问题

压测要点:按真实分布模拟,不要只压总量。一场覆盖全国的会议,1 万人集中在一线城市与 1 万人分散在全国,对调度的压力完全不同。压测方案与并发模型见 并发压测指南。

八、常见故障对照表

现象可能原因处理
某省用户全卡,其他省正常 该区域调度错判 / 节点拥塞 / 跨网互联质量差 按省份与运营商分组定位;联系服务方调整调度策略
起播慢但播放后流畅 GOP 偏长 / 起播档位过高 / 鉴权链路串行等待 减小 GOP;改为中档起播;鉴权前置
播放中途周期性缓冲 切片缓存策略与切片时长不匹配 / 源站回源抖动 核对缓存时长;检查源站上行与回源链路
微信内打不开,浏览器正常 自动播放限制 / 协议在微信内受限 适配微信播放策略;准备外部浏览器兜底
画面清晰度自动降得很低 档位梯度设置不合理 / 终端带宽被其他应用占用 拉开档位梯度;内网场景改为固定档位
同一链接部分人能看到、部分人 403 签名 URL 过期或时间校验不一致 核对签名有效期;检查观看端系统时间是否准确

把这张表打印出来放在值班手册里,能覆盖现场大部分分发侧问题。剩余无法定位的,按第一节的方法先做分段,再逐级排查。

九、上线前自查清单

检查项确认内容结论
观看人群分布 地区、运营商、接入方式(内网/公网/移动端流量) 已统计并同步给服务方
调度策略 是否启用 HTTPDNS;企业集中出口是否做定向处理 已确认
档位配置 档位数量、梯度、医疗场景是否固定档 已确认
GOP 与首帧 关键帧间隔与延迟目标的平衡 已确认
终端验证 微信、iOS、内网终端、国产浏览器真机验证 已覆盖全部目标终端
验收指标 首帧、卡顿率、错误率、延迟的基线值与责任人 已写明并双方确认
值班与兜底 故障联系人、备用线路、降级方案 已安排

分发是直播链路里用户能直接感知的一段。前期的调度确认、档位配置与终端验证做到位,现场只需要盯指标与兜底,不需要临时救火。