故障排查

更新时间:2026-10-19 14:40:57

直播故障排查

本文介绍如何排查互动直播的推流和播放问题。请先查看与故障现象对应的章节。如果问题仍未解决,请收集文末列出的信息并联系 CDNetworks 技术支持。

Table of Contents

推流问题

无法发布直播流

1. 检查 DNS

使用 DNS 查询工具,确认推流域名已解析到 CDNetworks 分配的 CNAME 目标域名。如果域名无法解析或指向其他地址,请在 DNS 服务商处修正记录,并等待变更生效。

2. 检查编码器设置

检查推流域名、发布点、流名、协议和端口。以 OBS Studio 及同类编码器为例:

  • Server/服务器:包含协议、推流域名和发布点,例如 rtmp://push.example.com/live。
  • Stream Key/串流密钥:包含流名及所需的查询参数,例如 demo。
  • 如果启用了 URL 鉴权,请添加所需参数,参数名称应与域名配置中的签名参数和时间戳参数名称一致。

确认域名配置允许使用该发布点。如有条件,请使用其他编码器进行对比测试。

3. 检查音视频格式

检查编码器的输出编码。直播通常使用 H.264 视频编码和 AAC 音频编码,同时还需要确认输出与所用直播协议及目标播放器兼容。

如果已有可访问的源流或播放地址,可以使用 FFmpeg 项目提供的 FFprobe 查看编码信息:

ffprobe -hide_banner "<源流或播放地址>"

将占位符替换为可访问的源流地址或拉流地址;如需鉴权,请添加相应参数。仅用于接收推流的地址不能作为播放地址。如果尚未开始推流,请检查编码器设置或本地录制文件。

4. 检查是否存在其他推流会话

如果已有发布端使用相同的发布点和流名,新推流会话可能无法建立。编码器提示 Server error: Failed to publish 时,请检查是否有其他编码器或进程正在发布该直播流。停止重复会话,或使用其他流名测试。

5. 检查鉴权和访问控制

启用鉴权后,推流地址必须包含有效且未过期的鉴权参数。请检查参数名称和值,必要时重新生成地址。同时确认 IP 等访问规则允许当前发布端的请求。仅凭 I/O error 无法确定具体原因。

配置说明请参见访问控制。

6. 检查禁播任务

在控制台中检查是否有生效中的禁播任务作用于该直播流或发布端 IP。如果禁播不符合预期,请联系具有相应权限的管理员解除后重试。

7. 检查发布端网络

  • 测试推流域名和所配置端口的连通性。RTMP 通常使用 TCP 1935 端口;如果地址指定了其他端口,请测试实际端口。
  • 检查丢包、时延波动,以及防火墙、代理、路由器或 ISP 的连接限制。
  • 确认可用上行带宽能够持续满足推流码率要求。

播放问题

无法播放或返回 HTTP 错误

1. 检查播放地址

播放地址包含拉流域名、发布点和流名,路径及扩展名因协议而异:

rtmp://play.example.com/app/stream
https://play.example.com/app/stream.flv
https://play.example.com/app/stream/playlist.m3u8

检查域名、发布点、流名、协议、路径、扩展名及字母大小写。如果使用 HTTPS,请确认拉流域名已配置有效证书。

如果启用了鉴权,请确认所需参数完整且未过期。对于 HLS,请区分失败的是播放列表请求还是媒体分片请求。

2. 检查 DNS 和域名配置

  • 确认拉流域名已解析到 CDNetworks 分配的 CNAME 目标域名。
  • 确认域名配置允许使用该发布点和播放协议。请参见发布点和协议禁用。
  • 检查当前请求的访问控制条件,包括观众 IP、Referer、User-Agent 和鉴权参数。

如果返回 403,优先检查鉴权和访问规则;如果返回 404,优先检查地址路径和源流是否可用。请记录响应状态码和响应内容,状态码本身无法确定具体原因。

3. 检查直播源

  • 推流接入:确认编码器已连接并持续发送数据,拉流域名已关联到正确的推流域名。如果推流失败,请参见无法发布直播流。
  • 回源拉流:确认源站直播流可用,并检查源站地址、协议、端口、Host 请求头及源站访问限制。请参见回源配置。

4. 使用其他播放器测试

使用支持相应协议和编码格式的其他播放器测试。如果可以正常播放,请检查原播放器的兼容性和配置。

对于浏览器播放,请查看开发者工具中的控制台和网络请求,检查证书错误,或 HTTPS 页面加载 HTTP 直播流的问题。如果 JavaScript 请求因跨域限制而失败,请检查 CORS 响应头。HLS 播放列表和媒体分片都可能需要这些响应头。

5. 检查观众端网络

使用其他设备和网络进行对比测试。如果只有一名观众受到影响,请检查该观众的网络连接、防火墙、代理、浏览器和播放器。

播放卡顿或频繁缓冲

  1. 确认发布端上行连接能够持续满足推流码率要求。对于回源拉流,还应检查源站直播流。
  2. 检查编码器的 CPU 和硬件使用率。如果负载过高,请降低码率、分辨率或帧率后测试。
  3. 使用其他设备、播放器和网络进行对比,确认观众端可用带宽能够满足直播码率要求。
  4. 区分源流帧率过低和播放缓冲。即使分发正常,帧率过低也会使运动画面显得不流畅。
  5. 检查播放器缓冲设置。增大缓冲区可以缓解网络波动的影响,但可能增加播放延迟。

画面模糊

  1. 检查推流前的源画面是否清晰。
  2. 检查编码器输出和可用的推流分析数据,确认码率、帧率、分辨率或直播流错误是否存在异常。
  3. 确认编码器未因硬件或网络限制而降低画质。
  4. 如果使用了转码,确认所选输出分辨率和码率满足需求。
  5. 使用其他播放器测试。如果支持,可对比软解码和硬解码效果。

播放意外中断

  1. 确认编码器或源站直播流是否在同一时间中断。如果是,请先排查直播源及其网络。
  2. 检查鉴权地址是否过期,或是否有禁播任务在播放期间生效。
  3. 确认中断影响的是一名观众、同一网络中的观众,还是多个地区的观众。
  4. 使用其他播放器、设备和网络对比测试,并收集下方列出的故障信息。

RTMP 和 HTTP-FLV 正常,但 HLS 播放失败

  1. 确认拉流域名已启用 HLS,且 HLS 播放地址正确。
  2. 分别检查播放列表和媒体分片请求,包括响应状态码、鉴权参数,以及适用时的 CORS 响应头。
  3. 使用 FFprobe 检查源流或播放流,并查看播放器日志中的编码、时间戳或封装错误。
  4. 确认音视频编码格式与目标 HLS 播放器兼容。
  5. 对于回源拉流,检查回源 Host,并确认源站能够提供所请求的播放列表和媒体分片。

HLS 有画面但没有声音

检查源流的音频编码,确认 HLS 播放器支持该编码。使用其他已启用的协议播放同一直播流进行对比。如果 RTMP 或 HTTP-FLV 有声音而 HLS 没有,请使用 AAC 音频编码测试。对于浏览器播放,还应检查自动播放限制是否导致播放器静音。

需要收集的信息

如果问题仍未解决,请向 CDNetworks 技术支持提供:

  • 推流地址和播放地址,并隐藏密钥和鉴权签名
  • 域名、发布点、流名和直播流接入方式
  • 协议,以及播放器或编码器的名称和版本
  • 故障发生时间和时区
  • 问题影响推流、播放,还是两者均受影响
  • 影响范围,包括观众、网络和地区
  • 受影响的公网 IP 地址(仅在适当且获得允许的情况下提供)
  • 错误信息、HTTP 响应状态码,以及相关编码器、播放器或请求日志
  • 使用其他播放器、设备、编码器或网络时的测试结果
  • FFprobe 或 FFmpeg 输出(如有)

分享地址、日志或截图前,请隐藏登录凭据、推流密钥、Token 和鉴权密钥。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!