拉流、卡錄基本流程
設備端(攝像機) 與 App端 是通過 AWS KVS WebRTC 信令服務進行“點對點連接”的,真正的媒體數據(音視頻)是通過 WebRTC 的 ICE 通道(P2P 或 TURN)直接傳輸的,而不是經過 KVS 中轉。
[Viewer] <---> [AWS Signaling Service] <---> [Master]↘ ↙↘------- ICE / STUN --------↙(P2P or TURN)????? 視頻/音頻數據傳輸 ?????
- 信令(SDP/ICE)交換:通過 AWS KVS 的 Signaling Channel
- 媒體(音視頻)數據傳輸:通過 WebRTC 的 RTP 通道,不走 KVS 存儲服務
- WebRTC 模式下,KVS 提供“信令通道”服務,用于幫助 Master 和 Viewer 建立連接。
Webrtc可以傳送實時畫面,也可以播放本地文件,我們業務中的設備將視頻錄制在本地,之后借助webrtc,給app播放本地視頻,這是卡錄的實現。
媒體數據傳輸
- 視頻流(RTP)直接在 Master 和 Viewer 之間傳輸
- 若網絡條件不允許 P2P,AWS 的 TURN 服務器會作為中繼(還是不經過 KVS 存儲)
- 無論是 P2P 還是 Relay(TURN 中繼),Master 和 Viewer 之間傳輸媒體數據時,使用的都是 RTP 通道。
補充說明
那么什么時候才走到 AWS KVS 的“Media 服務”?
如果設備端使用的是KVS Producer SDK(使用 PutMedia 或 PutFrame)進行持續推流,使用 HLS / DASH 播放回放鏈接,才會用到 AWS KVS 的核心存儲服務。
云錄模式
我們的云錄事件業務場景是:
1、設備(云臺攝像機)觸發事件開始錄制;
2、生成事件封面圖上報到s3;
3、生成m3u8文件;
4、上報ts文件和m3u8;
5、事件錄制中持續上報ts和覆蓋m3u8,直到事件結束;
6、業務云提供接口給app端,app端下載ts文件和m3u8文件進行播放。
具體流程請參考下篇文章:
https://blog.csdn.net/zhang_jiamin/article/details/149328779?spm=1011.2415.3001.5331