mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-23 11:17:09 +08:00
提升按需转协议性能与体验
This commit is contained in:
parent
0f54351811
commit
1cc3add97f
@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include "Common/config.h"
|
||||||
#include "MultiMediaSourceMuxer.h"
|
#include "MultiMediaSourceMuxer.h"
|
||||||
namespace mediakit {
|
namespace mediakit {
|
||||||
|
|
||||||
@ -450,11 +451,21 @@ void MultiMediaSourceMuxer::inputFrame(const Frame::Ptr &frame_in) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool MultiMediaSourceMuxer::isEnabled(){
|
bool MultiMediaSourceMuxer::isEnabled(){
|
||||||
|
GET_CONFIG(uint32_t, stream_none_reader_delay_ms, General::kStreamNoneReaderDelayMS);
|
||||||
|
if (!_is_enable || _last_check.elapsedTime() > stream_none_reader_delay_ms) {
|
||||||
|
//无人观看时,每次检查是否真的无人观看
|
||||||
|
//有人观看时,则延迟一定时间检查一遍是否无人观看了(节省性能)
|
||||||
#if defined(ENABLE_RTPPROXY)
|
#if defined(ENABLE_RTPPROXY)
|
||||||
return (_muxer->isEnabled() || _rtp_sender);
|
_is_enable = (_muxer->isEnabled() || _rtp_sender);
|
||||||
#else
|
#else
|
||||||
return _muxer->isEnabled();
|
_is_enable = _muxer->isEnabled();
|
||||||
#endif //ENABLE_RTPPROXY
|
#endif //ENABLE_RTPPROXY
|
||||||
|
if (_is_enable) {
|
||||||
|
//无人观看时,不刷新计时器,因为无人观看时每次都会检查一遍,所以刷新计数器无意义且浪费cpu
|
||||||
|
_last_check.resetTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _is_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,6 +183,8 @@ public:
|
|||||||
void onAllTrackReady() override;
|
void onAllTrackReady() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool _is_enable = false;
|
||||||
|
Ticker _last_check;
|
||||||
Stamp _stamp[2];
|
Stamp _stamp[2];
|
||||||
MultiMuxerPrivate::Ptr _muxer;
|
MultiMuxerPrivate::Ptr _muxer;
|
||||||
std::weak_ptr<MultiMuxerPrivate::Listener> _track_listener;
|
std::weak_ptr<MultiMuxerPrivate::Listener> _track_listener;
|
||||||
|
Loading…
Reference in New Issue
Block a user