前言
经常会收到客户咨询,直播推流失败是什么原因导致。从云直播使用步骤上来讲,直播推流作为第一步,如果推流失败,后续的转码、录制、播放等都无从实现。因此推流可以说是非常重要的开端,但用户常常不知道失败后如何排查。其实推流失败大部分可归纳为几类原因,本篇以腾讯云直播推流为例介绍下常见的推流失败问题及定位方法。
问题描述
如果遇到直播推流失败,从哪些方面排查呢?这里总结以下几种方向,希望能帮助到有需要的同学。
- 是否使用的是推流域名?
- 推流域名有CNAME解析?
- 推流URL里带的鉴权有效时间txTime已经过期?
- 推流URL里带的鉴权签名txSecret计算错误?
- 流ID被禁用?
- 直播被停服?
- 推流经常断开?
- 多个推流端推同一个URL?
原因分析及解决方案
针对上面总结的几点问题,我们来看下每类问题定位分析和解决的方法。
1. 是否使用的是推流域名?
我们使用腾讯云直播需要用到两个域名,一个推流域名,一个播放域名,推流与播放域名不能一致。怎么确定我们是否用错域名了呢?
可以登陆官网控制台,在域名管理下,找到自己的域名,确认域名类型为推流域名,不是播放域名即可:
2. 推流域名有CNAME解析?
域名接入云直播后,系统会自动分配一个 CNAME 域名(以.liveplay.myzijiebao.com为后缀),CNAME 域名不可以直接访问,我们需要在域名服务提供商处完成 CNAME 配置,配置生效后,CNAME 地址状态符号变成✅,就可以正常使用啦。可以通过控制台和命令行2种方法检查:
1)控制台检查,如果状态为红色则配置未生效:
2)命令行检查,执行dig 域名,如果查询不到解析则CNAME配置未生效,如下:
这里以一个生效的CNAME作为例子,正常情况下dig查询到第一条解析跟控制台配置的解析应该一致,比如:
3. 推流URL里带的鉴权有效时间txTime已经过期?
为保护直播推流的信息安全,云直播推流域名默认开启推流鉴权。使用推流地址生成器可生成带着 StreamName 的 RTMP 推流地址。有同学担心自己的直播流量被人盗用,将 txTime 设置得过于保守。如果一个推流地址之前推流正常,现在不能推流,可以通过以下2种方法检查是否推流时间过期:
1)在控制台事件中心-断流记录,检查对应流的断流原因:
这里断流原因比较明确,提示为过期时间参数值已过期,需重新生成新的推流地址。
2)也可以进一步验证时间戳是否过期。这里使用的例子txTime=5F97C063,通过地址:http://tool.oschina.net/hexconvert,首先把txTime换成十进制时间戳格式为1603780707,
再使用地址:http://tool.chinaz.com/Tools/unixtime.aspx,把十进制时间戳换成时间格式,断定是时间过期了。
4. 推流URL里带的鉴权签名txSecret计算错误?
大家使用防盗链来确保推流地址安全,当然防盗链计算错误也会导致推流失败。那如何计算防盗链,从哪里可以确认推流失败是txSecret计算错误导致的呢?可以参考下面2种方法:
1)首先看下如何确认txSecret 是否错误,在控制台事件中心-断流记录,检查对应流的断流原因:
可以看到提示为校验鉴权参数不通过,需要重新生成推流地址,可以使用控制台推流地址生成器自动生成。如果想自行计算推流地址,可以参考如下计算方法:
2)使用控制台自助诊断工具来判断txSecret的准确性。在工具页面选择推流地址,填写推流URL后执行诊断,可以对我们流的状态、txSecret、txTime等信息进行诊断,如下:
5. 流ID被禁用?
有时候流被禁用,会导致推流失败。可以通过 事件中心-断流记录,检查对应流的断流原因来确认:
这里看到推流流名处于禁播状态。导致禁播有以下几种可能:
1)用户在控制台流管理,禁用了该流;
2)用户调用了ForbidLiveStream接口禁推该流,
如果需要恢复对应的流,重新启用流即可。
6. 直播被停服?
如果用户视频内容涉黄,直播会被停服,登陆控制台会会显示如下页面。这里注意哦,涉黄停服后是不能再开服的,所以大家要留意自己直播内容的合规性。
7. 推流经常断开?
有同学会遇到,推流反复出现断开。但流偶尔可以正常推,说明推流地址正常,可能是用户侧网路问题,可以让用户切换下网络推流尝试。另外也可以使用腾讯云华佗诊断地址https://ping.huatuo.qq.com/,来获取客户端IP,LDNS,域名请求IP,请求耗时等信息,查看是否存在网路问题。
8. 多个推流端推同一个URL?
有时候推流地址申请下来,会有多端推流的情况,但第二个推流会失败。是因为一个推流 URL 同时只能有一个推流端,第二个尝试去推流的 Client 会被拒绝。遇到这种情况怎么定位呢?可以通过控制台-流管理-在线流,查看此条流是否已经在推,避免同时推流。
小结
以上就是我们常见的推流失败的问题及定位解决方法啦。大家后续遇到推流失败问题,可以多多使用控制台事件中心下的断流记录或自助诊断工具,优先自助排查问题。