直播播放不了排查方式

最近更新时间:2017-08-16 10:50:52

根据经验,直播播放不了与直播卡顿的排查方式类似,从服务端,使用排除法进行拉流测试,具体测试方法如下几点:

  • 查看推流是否正常
  • 更换网络拉流播放
  • 更换播放器播放
  • 更换播放地址进行播放
  • dig 命令看一下域名的解析

1.查看推流是否正常

推流查询有两种方式:一种是在控制台查询,另一种调用status()接口查询

举个例子:假设播放地址是 rtmp://pili-live-rtmp.baozijian.com/tron/tecooler

控制台查询

这个推流地址在控制台的查询截图如下:

调用 status() 接口查询

服务端有一个 status() 接口,可以获取实时的流状态,看下当前直播流是否是连接中,如果是 disconnected状态,那么肯定是播放不了的,下面 python 代码示例

# github 链接地址 https://github.com/pili-engineering/pili-sdk-python/tree/v1#get-stream-status
status = stream.status()
print status

2.更换网络拉流播放

假如在 wifi 下播放不了,可以切换到 4G 下进行播放测试,不同运营商和不同网络间,我们提供的覆盖节点可能是不相同的,如果说在一个网络下可以播放,另外一个网络下不可以播放,那么可能出在节点问题上,或者是网络解析层面。
如何测试节点?手机端测试可以使用手机测试工具
网络解析查询访问一下 ip&dns查询,可以看到本地的 ip 和 dns 信息
将这两个信息截图保存,然后提交一下工单到七牛,这边会进行测试核实,然后进行处理。

3.更换播放器播放

不同的播放器兼容不同的协议,一般 rtmp flv 播放协议需要 flash 播放器,hls 可以在 safri 上播放,浏览器是不能直接播放的,最简单的是使用我们手机播放端的 sdk ,网页测试可以使用 video 标签自己写一个 H5 的播放器;测试使用,这边推荐一个在线的网页播放器,这个播放器可以播放rtmp hls flv三种格式的播放地址

4.更换播放地址进行播放

这个步骤一般是为了排除,hls 没有成功切片的问题,假如出现 rtmp 正常播放,但是 hls 播放不了,可以使用 ffprobe 测试一下,是否是推流端推上来的音视频编码不是标准的 h264 + aac ,这个情况出现的话,基本就会是这个问题。

➜  ~ ffprobe -hide_banner rtmp://pili-live-rtmp.baozijian.cc/tron/baozijian-test
Input #0, flv, from 'rtmp://pili-live-rtmp.baozijian.cc/tron/baozijian-test':
  Metadata:
    major_brand     : mp42
    x-reqid         : TwRC8rSeS2cDOiRt
    compatible_brands: isommp42
    minor_version   : 0
    encoder         : Lavf57.56.100
    cdn_ip          : 61.162.231.198
  Duration: N/A, start: 0.054000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 30.30 fps, 29.97 tbr, 1k tbn, 59.94 tbc
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp

5.dig命令看一下域名的解析

如果上面的都试过了,还是无法播放,那么建议本地网络下,使用 linuxdig 命令,进行 dns 查询,看下是否解析成功,是否和七牛提供的 CNAME 入口 解析匹配

➜  ~ dig pili-live-rtmp.baozijian.cc +short
10005x3.live-rtmp.v1.pilidns.com. # 这个就是入口
live-rtmp2.v1.pilidns.com.
default.play.vdn.pilidns.com.

七牛 CNAME 入口位置截图:

以上内容是否对您有帮助?
  • Close