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之类的,避免自己发送到自己就行)