首页 > 网站 > Nginx > 正文

nginx-rtmp延迟的原因

2024-08-30 12:22:53
字体:
来源:转载
供稿:网友
一、何为延迟
  例如,在12分采集的视频画面到13分才显示。这就是1分钟的延迟
二、出现延迟的原因
  1.数据滞后
  由于网络等原因,上行推送或者下行转发出现了网络拥塞,音视频数据堆积在socket 缓冲区中。这种延迟只能通过优化网络质量来解决
  2.时间戳错误
  推送端推送的时候,在采集到音视频数据之后,还做了一些类似转码等操作之后,才打时间戳,并推送数据。多线程可以解决此类问题。一个线程进行数据采集,另一个线程进行转码推送操作。这样能够将延迟保持在一定范围内。
  3.推送端cpu负载过高,导致的时间戳打的不准。解决办法,降低编码码率,一般cpu负载到70%以上,gettimeofday统计的时间就会出现一定的误差了。
三、case案例分析
  一 从服务端分析,排查是否有数据堆积。(一般局域网环境,出现数据堆积的可能性比较小)
  在服务端加日志,看是否有数据堆积。
  参见代码:
  ngx_rtmp_send()函数中,发送rtmp数据的地方可以加上这个日志,以确认,应发与实际发送的数据量是否相等。
  活着可以通过抓包,观察下行发送数据对端的窗口大小是否有不断减小,甚至0窗口。
  也可检查一下这个链表的长度是否为0,来确认是否有数据发送堆积。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表