记录排查国标直播流播放卡顿的问题

背景

相同镜像, 在公有云跑直播视频不卡顿, 在其他私有化交付环境直播不卡顿, 但是在某项目交付中, 很多海康摄像机播放一天左右出现了卡顿的问题, ffplay播放不明显, 但是浏览器cyberplayer播放卡顿明显.

媒体流流向: IPC-> 服务器gbsrs-> 服务器srs->其他服务器-> .............->播放集群-> ffplay/cyberplayer/其他播放器

对pts的修改只有gbsrs和srs

排查过程

1、ffprobe显示下行视频pts存在相同的pts. 频率很高, pts如: 0 40 40 80 120 120 160 200 240 240 .... 没有规律可言.

2、从服务器抓包摄像机发出来的包, 发现源rtp/ps数据 音视频正常, 不存在相同的情况.

3、回顾服务器对pts的更改. gbsrs对音视频pts分别correct, 并且correct之后的fpts除90, 放在转封装rtmp的timestamp中. 

  srs收到gbsrs收到的rtmp之后对pts进行了合并correct.

4、抓包gbsrs-> srs的rtmp流, 分析得知, gbsrs产出的视频不存在pts重复的情况

5、抓包srs产出的rtmp流, 分析得知, srs产出的视频存在pts重复的情况.

结论

gbsrs存在video-jitter 和 audio-jitter分别对视音频pts校正,  srs音视频使用同一个jitter对视音频pts进行校正. 

gbsrs的video-jitter 和audio-jitter的差值如果越来越大, srs的jitter对gbsrs产出的音视频pts综合校正, 导致srs最终产出的pts视频可能造成相同的情况.

解决办法

把gbsrs的音视频pts校正都是用同一个jitter. 保证只要从摄像机发出来的视频间、音频间pts差距不是很大(小于1S),gbsr产出的pts就可以相对正常. 

反思

原文地址:https://www.cnblogs.com/micoblog/p/15606803.html