添加对象统计接口

This commit is contained in:
xiongziliang 2021-01-23 09:44:37 +08:00
parent 291caf537a
commit aa45590c13
9 changed files with 76 additions and 1 deletions

@ -1 +1 @@
Subproject commit 64a61db77b1adeada5e6229b83fec655b1cc09bc Subproject commit 6a21c58fa2e21416306c5a9cc88f943b882253e6

View File

@ -58,6 +58,32 @@
}, },
"response": [] "response": []
}, },
{
"name": "获取主要对象个数(getStatistic)",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{ZLMediaKit_URL}}/index/api/getStatistic?secret={{ZLMediaKit_secret}}",
"host": [
"{{ZLMediaKit_URL}}"
],
"path": [
"index",
"api",
"getStatistic"
],
"query": [
{
"key": "secret",
"value": "{{ZLMediaKit_secret}}",
"description": "api操作密钥(配置文件配置)如果操作ip是127.0.0.1,则不需要此参数"
}
]
}
},
"response": []
},
{ {
"name": "获取后台线程负载(getWorkThreadsLoad)", "name": "获取后台线程负载(getWorkThreadsLoad)",
"request": { "request": {
@ -568,6 +594,12 @@
"key": "enable_mp4", "key": "enable_mp4",
"value": "0", "value": "0",
"description": "是否开启mp4录制" "description": "是否开启mp4录制"
},
{
"key": "ffmpeg_cmd_key",
"value": "ffmpeg.cmd_hd",
"description": "FFmpeg命名参数模板置空则采用配置项:ffmpeg.cmd",
"disabled": true
} }
] ]
} }

View File

@ -1026,6 +1026,24 @@ void installWebApi() {
}); });
}); });
api_regist("/index/api/getStatistic",[](API_ARGS_MAP){
CHECK_SECRET();
val["data"]["MediaSource"] = (Json::UInt64)(ObjectStatistic<MediaSource>::count());
val["data"]["MultiMediaSourceMuxer"] = (Json::UInt64)(ObjectStatistic<MultiMediaSourceMuxer>::count());
val["data"]["TcpSession"] = (Json::UInt64)(ObjectStatistic<TcpSession>::count());
val["data"]["TcpClient"] = (Json::UInt64)(ObjectStatistic<TcpClient>::count());
val["data"]["Socket"] = (Json::UInt64)(ObjectStatistic<Socket>::count());
val["data"]["FrameImp"] = (Json::UInt64)(ObjectStatistic<FrameImp>::count());
val["data"]["Frame"] = (Json::UInt64)(ObjectStatistic<Frame>::count());
val["data"]["Buffer"] = (Json::UInt64)(ObjectStatistic<Buffer>::count());
val["data"]["BufferRaw"] = (Json::UInt64)(ObjectStatistic<BufferRaw>::count());
val["data"]["BufferLikeString"] = (Json::UInt64)(ObjectStatistic<BufferLikeString>::count());
val["data"]["BufferList"] = (Json::UInt64)(ObjectStatistic<BufferList>::count());
});
////////////以下是注册的Hook API//////////// ////////////以下是注册的Hook API////////////
api_regist("/index/hook/on_publish",[](API_ARGS_MAP){ api_regist("/index/hook/on_publish",[](API_ARGS_MAP){
//开始推流事件 //开始推流事件

View File

@ -14,6 +14,11 @@
#include "Network/sockutil.h" #include "Network/sockutil.h"
#include "Network/TcpSession.h" #include "Network/TcpSession.h"
using namespace toolkit; using namespace toolkit;
namespace toolkit {
StatisticImp(mediakit::MediaSource);
}
namespace mediakit { namespace mediakit {
recursive_mutex s_media_source_mtx; recursive_mutex s_media_source_mtx;

View File

@ -296,6 +296,8 @@ private:
string _app; string _app;
string _stream_id; string _stream_id;
std::weak_ptr<MediaSourceEvent> _listener; std::weak_ptr<MediaSourceEvent> _listener;
//对象个数统计
ObjectStatistic<MediaSource> _statistic;
}; };
///缓存刷新策略类 ///缓存刷新策略类

View File

@ -11,6 +11,11 @@
#include <math.h> #include <math.h>
#include "Common/config.h" #include "Common/config.h"
#include "MultiMediaSourceMuxer.h" #include "MultiMediaSourceMuxer.h"
namespace toolkit {
StatisticImp(mediakit::MultiMediaSourceMuxer);
}
namespace mediakit { namespace mediakit {
///////////////////////////////MultiMuxerPrivate////////////////////////////////// ///////////////////////////////MultiMuxerPrivate//////////////////////////////////

View File

@ -192,6 +192,8 @@ private:
mutex _rtp_sender_mtx; mutex _rtp_sender_mtx;
unordered_map<string, RtpSender::Ptr> _rtp_sender; unordered_map<string, RtpSender::Ptr> _rtp_sender;
#endif //ENABLE_RTPPROXY #endif //ENABLE_RTPPROXY
//对象个数统计
ObjectStatistic<MultiMediaSourceMuxer> _statistic;
}; };
}//namespace mediakit }//namespace mediakit

View File

@ -13,6 +13,11 @@
using namespace std; using namespace std;
using namespace toolkit; using namespace toolkit;
namespace toolkit {
StatisticImp(mediakit::Frame);
StatisticImp(mediakit::FrameImp);
}
namespace mediakit{ namespace mediakit{
/** /**

View File

@ -122,6 +122,10 @@ public:
* frame * frame
*/ */
static Ptr getCacheAbleFrame(const Ptr &frame); static Ptr getCacheAbleFrame(const Ptr &frame);
private:
//对象个数统计
ObjectStatistic<Frame> _statistic;
}; };
class FrameImp : public Frame { class FrameImp : public Frame {
@ -166,6 +170,8 @@ public:
uint32_t _pts = 0; uint32_t _pts = 0;
size_t _prefix_size = 0; size_t _prefix_size = 0;
BufferLikeString _buffer; BufferLikeString _buffer;
//对象个数统计
ObjectStatistic<FrameImp> _statistic;
}; };
/** /**