mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-05 10:58:11 +08:00
Add network traffic statistics (#4239)
Co-authored-by: xiongguangjie <xiong_panda@163.com> Co-authored-by: xia-chu <771730766@qq.com>
This commit is contained in:
@@ -110,13 +110,20 @@ std::shared_ptr<void> MediaSource::getOwnership() {
|
||||
});
|
||||
}
|
||||
|
||||
int MediaSource::getBytesSpeed(TrackType type){
|
||||
size_t MediaSource::getBytesSpeed(TrackType type) {
|
||||
if(type == TrackInvalid || type == TrackMax){
|
||||
return _speed[TrackVideo].getSpeed() + _speed[TrackAudio].getSpeed();
|
||||
}
|
||||
return _speed[type].getSpeed();
|
||||
}
|
||||
|
||||
size_t MediaSource::getTotalBytes(TrackType type) {
|
||||
if (type == TrackInvalid || type == TrackMax) {
|
||||
return _speed[TrackVideo].getTotalBytes() + _speed[TrackAudio].getTotalBytes();
|
||||
}
|
||||
return _speed[type].getTotalBytes();
|
||||
}
|
||||
|
||||
uint64_t MediaSource::getAliveSecond() const {
|
||||
// 使用Ticker对象获取存活时间的目的是防止修改系统时间导致回退 [AUTO-TRANSLATED:68474061]
|
||||
// The purpose of using the Ticker object to obtain the survival time is to prevent the modification of the system time from causing a rollback
|
||||
|
||||
@@ -442,7 +442,9 @@ public:
|
||||
|
||||
// 获取数据速率,单位bytes/s [AUTO-TRANSLATED:c70465c1]
|
||||
// Get data rate, unit bytes/s
|
||||
int getBytesSpeed(TrackType type = TrackInvalid);
|
||||
size_t getBytesSpeed(TrackType type = TrackInvalid);
|
||||
size_t getTotalBytes(TrackType type = TrackInvalid);
|
||||
|
||||
// 获取流创建GMT unix时间戳,单位秒 [AUTO-TRANSLATED:0bbe145e]
|
||||
// Get the stream creation GMT unix timestamp, unit seconds
|
||||
uint64_t getCreateStamp() const { return _create_stamp; }
|
||||
|
||||
@@ -183,9 +183,12 @@ std::string MultiMediaSourceMuxer::shortUrl() const {
|
||||
return _tuple.shortUrl();
|
||||
}
|
||||
|
||||
void MultiMediaSourceMuxer::forEachRtpSender(const std::function<void(const std::string &ssrc)> &cb) const {
|
||||
void MultiMediaSourceMuxer::forEachRtpSender(const std::function<void(const std::string &ssrc, const RtpSender &sender)> &cb) const {
|
||||
for (auto &pr : _rtp_sender) {
|
||||
cb(pr.first);
|
||||
auto sender = std::get<1>(pr.second).lock();
|
||||
if (sender) {
|
||||
cb(pr.first, *sender);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,10 +446,11 @@ void MultiMediaSourceMuxer::startSendRtp(MediaSource &sender, const MediaSourceE
|
||||
// 可能归属线程发生变更 [AUTO-TRANSLATED:2b379e30]
|
||||
// The owning thread may change
|
||||
strong_self->getOwnerPoller(MediaSource::NullMediaSource())->async([=]() {
|
||||
if(!ssrc_multi_send) {
|
||||
if (!ssrc_multi_send) {
|
||||
strong_self->_rtp_sender.erase(ssrc);
|
||||
}
|
||||
strong_self->_rtp_sender.emplace(ssrc,reader);
|
||||
std::weak_ptr<RtpSender> sender = rtp_sender;
|
||||
strong_self->_rtp_sender.emplace(ssrc, make_tuple(reader, sender));
|
||||
});
|
||||
});
|
||||
#else
|
||||
|
||||
@@ -194,7 +194,7 @@ public:
|
||||
const MediaTuple &getMediaTuple() const;
|
||||
std::string shortUrl() const;
|
||||
|
||||
void forEachRtpSender(const std::function<void(const std::string &ssrc)> &cb) const;
|
||||
void forEachRtpSender(const std::function<void(const std::string &ssrc, const RtpSender &sender)> &cb) const;
|
||||
|
||||
protected:
|
||||
/////////////////////////////////MediaSink override/////////////////////////////////
|
||||
@@ -245,7 +245,7 @@ private:
|
||||
toolkit::Ticker _last_check;
|
||||
std::unordered_map<int, Stamp> _stamps;
|
||||
std::weak_ptr<Listener> _track_listener;
|
||||
std::unordered_multimap<std::string, RingType::RingReader::Ptr> _rtp_sender;
|
||||
std::unordered_multimap<std::string, std::tuple<RingType::RingReader::Ptr, std::weak_ptr<RtpSender>>> _rtp_sender;
|
||||
FMP4MediaSourceMuxer::Ptr _fmp4;
|
||||
RtmpMediaSourceMuxer::Ptr _rtmp;
|
||||
RtspMediaSourceMuxer::Ptr _rtsp;
|
||||
|
||||
Reference in New Issue
Block a user