rtc拉流代理支持显示sockInfo和码率

This commit is contained in:
mtdxc
2025-09-29 09:00:46 +08:00
committed by 夏楚
parent 016f6e0e59
commit 13f603328f
5 changed files with 40 additions and 3 deletions

View File

@@ -180,8 +180,8 @@ public:
virtual void setOnResume(const std::function<void()> &cb) = 0;
virtual size_t getRecvSpeed() { return 0; }
virtual size_t getRecvTotalBytes() { return 0; }
virtual std::shared_ptr<toolkit::SockInfo> getSockInfo() const { return nullptr; }
protected:
virtual void onResume() = 0;
@@ -241,8 +241,11 @@ public:
return _delegate ? _delegate->getTracks(ready) : Parent::getTracks(ready);
}
std::shared_ptr<toolkit::SockInfo> getSockInfo() const {
return std::dynamic_pointer_cast<toolkit::SockInfo>(_delegate);
std::shared_ptr<toolkit::SockInfo> getSockInfo() const override {
auto ret = std::dynamic_pointer_cast<toolkit::SockInfo>(_delegate);
if (!ret)
ret = _delegate ? _delegate->getSockInfo() : Parent::getSockInfo();
return ret;
}
void setMediaSource(const MediaSource::Ptr &src) override {

View File

@@ -2023,4 +2023,24 @@ Json::Value IceAgent::getChecklistInfo() const {
return result;
}
size_t IceAgent::getRecvSpeed() {
size_t ret = 0;
for (auto s : _socket_candidate_manager.getAllSockets()) {
if (s && s->getSock()) {
ret += s->getSock()->getRecvSpeed();
}
}
return ret;
}
size_t IceAgent::getRecvTotalBytes() {
size_t ret = 0;
for (auto s : _socket_candidate_manager.getAllSockets()) {
if (s && s->getSock()) {
ret += s->getSock()->getRecvTotalBytes();
}
}
return ret;
}
} // namespace RTC

View File

@@ -553,6 +553,8 @@ public:
// 获取checklist信息用于API查询
Json::Value getChecklistInfo() const;
size_t getRecvSpeed();
size_t getRecvTotalBytes();
protected:
void gatheringSrflxCandidate(const Pair::Ptr& pair);

View File

@@ -36,6 +36,16 @@ public:
void pause(bool pause) override;
void speed(float speed) override;
std::shared_ptr<toolkit::SockInfo> getSockInfo() const override {
return getWebRtcTransport() ? getWebRtcTransport()->getSession() : nullptr;
}
size_t getRecvSpeed() override {
return getWebRtcTransport() ? getWebRtcTransport()->getRecvSpeed() : 0;
}
size_t getRecvTotalBytes() override {
return getWebRtcTransport() ? getWebRtcTransport()->getRecvTotalBytes() : 0;
}
protected:
//// WebRtcClient override////

View File

@@ -163,6 +163,8 @@ public:
float getTimeOutSec();
void getTransportInfo(const std::function<void(Json::Value)> &callback) const;
size_t getRecvSpeed() const { return _ice_agent ? _ice_agent->getRecvSpeed() : 0; }
size_t getRecvTotalBytes() const { return _ice_agent ? _ice_agent->getRecvTotalBytes() : 0; }
void setOnShutdown(std::function<void(const toolkit::SockException &ex)> cb);