zoukankan      html  css  js  c++  java
  • 记录排查国标直播流播放卡顿的问题

    背景

    相同镜像, 在公有云跑直播视频不卡顿, 在其他私有化交付环境直播不卡顿, 但是在某项目交付中, 很多海康摄像机播放一天左右出现了卡顿的问题, 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就可以相对正常. 

    反思

  • 相关阅读:
    LINQ学习系列-----1.3 扩展方法
    表单重复提交的三种情况及解决办法
    JDBC的简单封装
    Java学习路线图
    成为一名Java高级工程师你需要学什么
    站在烦恼里仰望幸福
    如何发布Web项目到互联网
    用户管理的设计--2.新增用户信息实现
    MD5加密工具
    springMvc注解之@ResponseBody和@RequestBody
  • 原文地址:https://www.cnblogs.com/micoblog/p/15606803.html
Copyright © 2011-2022 走看看