1.簡介
? ? ? ? 上篇文件介紹了流媒體與設備之間可能的交互場景,本文將介紹客戶端或者web端與攝像頭對講的總體流程。
? ? ? ? 老規矩,介紹一下本人的開源流媒體,點個star,有興趣一起開發的朋友也可以聯系本人:https://gitee.com/inyeme/simple-media-server
2.流程圖
? ? ? ? 本文以webrtc為例,其他的方式也可以,如websocket,tcp長連接等。
? ? ? ? 主要流程:
- 用戶在web端或者客戶端點擊語音對講后: 1)觸發信令接口,向攝像頭發起對講請求,將流媒體服務的ip,port以及協商的ssrc發給設備;2)與流媒體交互sdp(即rtc的offer和answer),獲取流媒體的ip,port,ssrc等信息。注意,這兩步沒有嚴格先后順序;客戶端的rtc是發流和收流用同一個socket還是獨立開來,看自己的業務;甚至攝像頭發過來的語音可以丟掉,因為可以收聽實時預覽攝像頭的流里的音頻,看對講業務與實時預覽業務的實現情況而定
- 客戶端向流媒體發送音頻,流媒體通過ssrc識別出流id,注冊到對講管理對象里
- 攝像頭向流媒體發送音頻,流媒體通過ssrc識別出流id,注冊到對講管理對象里
- 對講管理類,給注冊到自己的媒體鏈接分配角色,如客戶端的發送(接收)鏈接,攝像頭的發送(接收)鏈接。將客戶端的發送鏈接與攝像頭的接收鏈接關聯起來,反之也一樣。這樣音頻數據就串起來了(多個接收和發送方時,可以用userid之類的,避免自己發送到自己就行)