mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-10-30 16:27:36 +08:00
Add the listRtpSender http api
This commit is contained in:
parent
2d66dd7cb3
commit
664d0b67bc
@ -2044,6 +2044,47 @@
|
|||||||
},
|
},
|
||||||
"response": []
|
"response": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "获取rtp发送列表(listRtpSender)",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{ZLMediaKit_URL}}/index/api/listRtpSender?secret={{ZLMediaKit_secret}}&vhost={{defaultVhost}}&app=live&stream=test",
|
||||||
|
"host": [
|
||||||
|
"{{ZLMediaKit_URL}}"
|
||||||
|
],
|
||||||
|
"path": [
|
||||||
|
"index",
|
||||||
|
"api",
|
||||||
|
"listRtpSender"
|
||||||
|
],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "secret",
|
||||||
|
"value": "{{ZLMediaKit_secret}}",
|
||||||
|
"description": "api操作密钥(配置文件配置)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "vhost",
|
||||||
|
"value": "{{defaultVhost}}",
|
||||||
|
"description": "虚拟主机,例如__defaultVhost__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "app",
|
||||||
|
"value": "live",
|
||||||
|
"description": "应用名,例如 live"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "stream",
|
||||||
|
"value": "test",
|
||||||
|
"description": "流id,例如 obs"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "获取版本信息(version)",
|
"name": "获取版本信息(version)",
|
||||||
"request": {
|
"request": {
|
||||||
|
@ -1347,6 +1347,26 @@ void installWebApi() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
api_regist("/index/api/listRtpSender",[](API_ARGS_MAP_ASYNC){
|
||||||
|
CHECK_SECRET();
|
||||||
|
CHECK_ARGS("vhost", "app", "stream");
|
||||||
|
|
||||||
|
auto src = MediaSource::find(allArgs["vhost"], allArgs["app"], allArgs["stream"]);
|
||||||
|
if (!src) {
|
||||||
|
throw ApiRetException("can not find the source stream", API::NotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto muxer = src->getMuxer();
|
||||||
|
CHECK(muxer, "get muxer from media source failed");
|
||||||
|
|
||||||
|
src->getOwnerPoller()->async([=]() mutable {
|
||||||
|
muxer->forEachRtpSender([&](const std::string &ssrc) mutable {
|
||||||
|
val["data"].append(ssrc);
|
||||||
|
});
|
||||||
|
invoker(200, headerOut, val.toStyledString());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
api_regist("/index/api/startSendRtpPassive",[](API_ARGS_MAP_ASYNC){
|
api_regist("/index/api/startSendRtpPassive",[](API_ARGS_MAP_ASYNC){
|
||||||
CHECK_SECRET();
|
CHECK_SECRET();
|
||||||
CHECK_ARGS("vhost", "app", "stream", "ssrc");
|
CHECK_ARGS("vhost", "app", "stream", "ssrc");
|
||||||
|
@ -173,6 +173,12 @@ std::string MultiMediaSourceMuxer::shortUrl() const {
|
|||||||
return _tuple.shortUrl();
|
return _tuple.shortUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MultiMediaSourceMuxer::forEachRtpSender(const std::function<void(const std::string &ssrc)> &cb) const {
|
||||||
|
for (auto &pr : _rtp_sender) {
|
||||||
|
cb(pr.first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MultiMediaSourceMuxer::MultiMediaSourceMuxer(const MediaTuple& tuple, float dur_sec, const ProtocolOption &option): _tuple(tuple) {
|
MultiMediaSourceMuxer::MultiMediaSourceMuxer(const MediaTuple& tuple, float dur_sec, const ProtocolOption &option): _tuple(tuple) {
|
||||||
if (!option.stream_replace.empty()) {
|
if (!option.stream_replace.empty()) {
|
||||||
// 支持在on_publish hook中替换stream_id
|
// 支持在on_publish hook中替换stream_id
|
||||||
|
@ -133,6 +133,8 @@ public:
|
|||||||
const MediaTuple &getMediaTuple() const;
|
const MediaTuple &getMediaTuple() const;
|
||||||
std::string shortUrl() const;
|
std::string shortUrl() const;
|
||||||
|
|
||||||
|
void forEachRtpSender(const std::function<void(const std::string &ssrc)> &cb) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/////////////////////////////////MediaSink override/////////////////////////////////
|
/////////////////////////////////MediaSink override/////////////////////////////////
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user