AWS WebRTC:我们的业务模式
拉流、卡录基本流程
设备端(摄像机) 与 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