关于拉流端ts时间切片问题导致的直播黑屏问题
公司直播使用的是阿里的直播服务,但是华为的部分手机出现了黑屏,无法观看直播
首先搞懂推拉流
推流: 经过obs等推流工具,将要直播的流文件推送到阿里的直播服务器上
拉流: 遍布全国的阿里直播服务器将流下发给正在观看的用户
问题分析
- 推流这一块选择配置稍微低一点点即可,问题应该不在这里
- 那最有可能出问题的就是阿里直播服务器拉流这块了
- 有可能是拉流这块,下发的时候,每次发送的ts切片过快或过慢,导致本分手机无法很好地解析,以至于黑屏现象
- 过快的话会出现黑屏现象,过慢的话出现卡顿现象(这点是后来发现的)
阿里直播服务器在分发流的时候到底在做什么?
大胆地猜测,当我们把直播流推送到阿里直播服务器时,阿里开始接收,然后将若干时间的直播内容,打包成为ts切片,分发下去,这里就会出现一个问题,多长时间内发送多少个ts切片信息,我咨询了阿里的售后,答案如下:
- 默认为5秒6个切片
- 更改的话通常为2秒3个切片
- 直播过程中如果有录播的配置的话,还会在直播的过程中生成m3u8录播索引文件,每个m3u8文件对应若干个ts切片,录播的收回就会用到索引文件
- 其实在直播管理台后面的录播文件管理里面,(录制文件管理->存储至oss->管理录制配置->直播延时配置),据售后客服所说,可以有选择的定义多少秒几个ts切片,如下图:
再看一下延时配置的说明: - 当然你也可以自定义的让后台人员更改多少秒多少片
- 当然ts切片大小也是一个变量,但是客服说ts大小是恒定的.我测了之后确实如此,但是改变obs的推流配置后,ts切片大小就会发生改变
测试
- 5秒1片,3秒1片,2秒1片都试了,黑屏完美解决,在显著降低了了等比的切片数后,基本实现秒进直播间
- 但是同时出现了问题,直播个2分钟或5分钟或十几分钟的时候出现了卡住的现象
- 大胆猜测是由于发送的太少了,导致大量的数据堆积在阿里的直播服务器这块,所以卡主了,但又感觉不是这样
- 改为了5秒4片后,再次黑屏
- 改为了5秒2片,还是卡顿
- 5秒3片改不了