單通道 Go WebRTC服務端拉流接口無響應致使程序堵塞,如何處理?

咱們在經過GO語言開發webrtc服務時,使用js進行攝像頭推流調用go服務端http,交換sdp信息,先把攝像頭流推到服務端進行webrtc交互,再調用另外go http服務進行拉流。web

87.png

第一次進行http拉流,webrtc 會話描述進行過交換,可是測試期間咱們發現,若是此時再打開瀏覽器進行http 會話描述,go服務端會卡住,致使瀏覽器等段時間會超時錯誤。瀏覽器

此處的流程應該是下面這樣的:函數

一、Go 中webrtc拿到的流會放到一個全局變量中,以下:測試

64.png

二、經過go的接口交換會話描述,再使用webrtc回調函數方法,拿到流就往裏面寫數據。線程

65.png

問題就出在第二步,咱們在使用拉流接口時也是交換會話描述,從第二步中go寫流數據的接口拿到流,這樣瀏覽器在進行拉流操做時,接口無響應,致使瀏覽器超時。視頻

66.png

找到問題,解決問題也比較簡單,把go保存的流開個線程,一直往裏寫數據,這樣就不會形成堵塞了。blog

67.png

咱們開發的webrtc-client就已經通過了屢次測試,在現有的視頻播放平臺上有了新的飛躍,而新型的與WebRTC相結合的EasyScreenLive同屏服務將在視頻播放的流暢度和延時方面有更加優越的體現,你們能夠經過關注Github得到咱們的技術動態。
 接口

相關文章
相關標籤/搜索