1、源流媒体服务器
客户端向源流媒体服务器发送拉流请求,而源流媒体服务器向设备端发起拉流并转换为RTMP,推送给SRS。
2、SRS服务器
负责将RTMP流转换为WebRTC流输出。
问题:如何当SRS的webrtc无人消费时源流媒体服务器停止向SRS推送RTMP,等到下一次新请求在推送。
解决方案:通过SRS wiki分析,可以通过web api实现,使用接口http://127.0.0.1:1985/api/v1/streams
{
"code": 0,
"server": "vid-f04w449",
"streams": [
{
"id": "vid-u63y79h",
"name": "906E736C-2C43-4494-A872-E55EA289D90C",
"vhost": "vid-vhh797n",
"app": "live",
"live_ms": 1654840917901,
"clients": 1,
"frames": 0,
"send_bytes": 4293,
"recv_bytes": 49825046,
"kbps": {
"recv_30s": 69,
"send_30s": 0
},
"publish": {
"active": true,
"cid": "567311e8"
},
"video": null,
"audio": {
"codec": "AAC",
"sample_rate": 44100,
"channel": 2,
"profile": "LC"
}
}
]
}
通过测试发现返回json中的clients字段可以使用,它代表推拉流的数量,当为1时表示只有一个publish往上推送媒体数据,这时候就源流媒体服务器可以停止往SRS推流,并释放资源。