給srs長時間推流記憶體增長異常問題處理

2021-09-23 14:17:25 字數 889 閱讀 3312

使用librtmp庫將拉取監控的rtsp流推送給srs伺服器,發現乙個異常,在長時間大概1個月後發現系統記憶體被srs吃滿,也不知道是什麼原因產生的這個現象,並且通過top去檢視srs的內存在持續增長,通過ffmpeg推流沒有這個現象,感覺還是librtmp使用的問題,暫時也沒有很好的思路分析;

通過檢視srs的git庫,發現srs提供了乙個srs-librtmp的原始碼庫,能完成推送h264裸流的功能,然後嘗試使用這個庫推送流到srs,發現srs的記憶體沒有明顯的增長,所以就選擇換成srs-librtmp的推流庫來推流,並且srs-librtmp的介面使用非常簡單;

另外,公司採購了新的海康球形機,預設開啟rtsp的認證,但使用md5認證使用認證失敗,一直返回401,剛開始懷疑是md5演算法的問題,參考:中的計算md5的方式,算出來的md5值也是一樣的,正好對rtsp的md5認證的演算法也有了了解:

rtsp客戶端應該使用username + password並計算response如下:

(1)當password為md5編碼,則

response = md5( password:nonce:md5(public_method:url)  );

(2)當password為ansi字串,則

response= md5( md5(username:realm:password):nonce:md5(public_method:url) );

但問題還是沒有找到,最後發現是配置位址和實際的url位址不一致,少了一部分,並且xml解析的時候還有報錯,但被忽略了,原來是在xml中配置該球形機取流的rtsp位址有問題,該球形機的取流位址是:rtsp:

中的條件分割符&寫成& 也就是:

rtsp: profile=profile_1

這樣子修改之後,認證和取流就都正常了。

FMLE同時推多路流到SRS異常,推1路則正常。

根據日誌對源 進行跟蹤分析。cleanup when unpublish只在void srssource on unpublish 中列印。這個類方法在release publish source 中被呼叫的。進一步追蹤發現 上乙個publish還未結束,又來乙個publish造成前乙個publis...

長時間獨佔表

應用程式運算元據庫表時,需要長時間 可能要幾分鐘,甚至十來分鐘 修改資料表的資料,而在整個過程中,不容許別的使用者運算元據 即只能單使用者運算元據 這種情況,相當於要把表鎖住 跟資料庫概念的鎖不一樣 等執行完後,解鎖,別的使用者才可以運算元據。就這種問題,有以下幾種種解決方案。1.設定標記字段 fl...

srs之服務搭建 OBS推流(簡單記錄)

利用srs開啟rtmp服務 其他服務也可 通過obs進行推流直播 本機windows 10 推流 virtualbox ubuntu 18.04.3 lts srs3.0relase obs studio 進入虛擬機器,開啟終端 git clonecd srs.oschina trunk.confi...