rtmp :0:: WriteN, RTMP send error 104 原因分析过程

         项目上原本 用到4路 摄像头采集数据,一边写入帧数据到共享内存 做算法处理,一边做rtmp推流。推流 是基于 gstreamer 编写 ,流服务器 是用SRS .

        现在 刚刚买回一台新的服务器,二逼同事想试下服务器性能,让我写个测试代码 验证一下 服务器能支持多少路推流处理。 因为没有那么多摄像头,只能是 读现有的视频文件来做数据源 ,于是先做了10路视频的取视频帧+推流,一切OK .

然后加到15路视频推流,出现问题了:rtmp :0:: WriteN, RTMP send error 104  

终端报这个错误后,进程退出了。

开始以为 同时推送视频 太多了,尝试减少,发现减到11路视频推流的时候,还能正常跑。

到了第二天,发现 11路视频推流也不行了,接着 10路视频推流 也不行,再接着惊奇的发现 只推一路也不行了。

这时,我知道肯定是服务器环境发生了改变导致的。但是具体什么原因还不清楚。

开始排查运行环境

1,重新安装 gstreamer 运行环境 ,问题照旧 。

2,询问同时最近修改了什么?回答 在 SRS 运行配置文件中,增加了DVR 的设置

  于是把srs 流服务器从新启动,配置改成不做DVR  ,推流没有问题。显然是加了DVR 造成的推流失败。

说了这个发现后,二逼同事不乐意了,说不可能 ,之前项目也有做DVR 配置,肯定不是DVR的问题的。

仔细思索了一下,看看存储路径,顺便 df -l 看看储存空间 ,果然DVR 存储空间满了,清理存储空间后,继续 推流15路视频,一切OK 了 。

     这里有个疑问,SRS 配置了DVR , 当dvr 出现问题时,没有对应的报错信息处理 ,tail -n 30 -f ./objs/srs.log  没有任何错误信息出来 ,这是不对的,希望以后有大牛改善SRS这个问题。

你可能感兴趣的:(ffmpeg)