SRS本身提供http callback
比如鉴权,客户端开启直播流,关闭直播流等的状态可以以回调的方式通知到APP用户服务器
假设使用环信的IM,简单的架构图和流程如下图所示
1.生成RoomID并在环信服务器IMServer上申请成功
2.appserver 根据RoomID生成推流地址liveURL
3.APP推流端根据liveURL像SRS申请推流
4.推流成功SRS直接回调给appserver一个on_publish消息
5.APP拉流端向appserver获取到拉流地址liveURL
6.APP拉流端根据liveURL向SRS申请rtmp视频流
7.拉流成功on_connet成功回调至APPServer,房间人数+1
8.APPServer可以通过IMServer向众拉流端和本推流端广播xxx进入房间消息
9.各推流端可以通过IMServer在聊天室里发送文字,礼物和红包等互动消息
10.推流端停止直播
11.SRS回调on_unpublish到appserver
SRS要实现与http server交互需要做两点
1.在 compile时开启编译参数 --with-http-callback
2.在config中加入交互状态的回调地址,比如
on_connect http://127.0.0.1:8085/api/v1/clients
on_close http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;
官方wiki已经提供比较完整的例子
请参考
https://github.com/ossrs/srs/wiki/v3_CN_HTTPCallback
有兴趣的来一起啃源码,直播开源qq交流群:230586765
其他相关文档:
1.较为完整的开源直播框架[服务器,iOS,android]
2.直播的带宽与网络问题解析