mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-04 01:37:33 +08:00
添加无人观看主动断开事件
This commit is contained in:
@@ -44,8 +44,8 @@ using namespace toolkit;
|
||||
|
||||
namespace mediakit {
|
||||
|
||||
class MediaSourceEvent
|
||||
{
|
||||
class MediaSource;
|
||||
class MediaSourceEvent{
|
||||
public:
|
||||
MediaSourceEvent(){};
|
||||
virtual ~MediaSourceEvent(){};
|
||||
@@ -55,15 +55,18 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool close() {
|
||||
virtual bool close(bool force) {
|
||||
//通知其停止推流
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void onReaderChanged(const EventPoller::Ptr &poller,int size,bool add_flag){}
|
||||
virtual void onNoneReader(MediaSource &sender){
|
||||
//没有任何读取器消费该源,表明该源可以关闭了
|
||||
NoticeCenter::Instance().emitEvent(Broadcast::kBroadcastStreamNoneReader,sender);
|
||||
}
|
||||
};
|
||||
class MediaInfo
|
||||
{
|
||||
|
||||
class MediaInfo{
|
||||
public:
|
||||
MediaInfo(){}
|
||||
MediaInfo(const string &url){
|
||||
@@ -85,7 +88,6 @@ public:
|
||||
string _streamid;
|
||||
StrCaseMap _params;
|
||||
string _param_strs;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -144,12 +146,12 @@ public:
|
||||
|
||||
virtual uint32_t getTimeStamp(TrackType trackType) = 0;
|
||||
|
||||
bool close() {
|
||||
bool close(bool force) {
|
||||
auto listener = _listener.lock();
|
||||
if(!listener){
|
||||
return false;
|
||||
}
|
||||
return listener->close();
|
||||
return listener->close(force);
|
||||
}
|
||||
virtual void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
|
||||
_listener = listener;
|
||||
|
||||
@@ -65,11 +65,15 @@ const char kBroadcastFlowReport[] = "kBroadcastFlowReport";
|
||||
const char kBroadcastReloadConfig[] = "kBroadcastReloadConfig";
|
||||
const char kBroadcastShellLogin[] = "kBroadcastShellLogin";
|
||||
const char kBroadcastNotFoundStream[] = "kBroadcastNotFoundStream";
|
||||
const char kBroadcastStreamNoneReader[] = "kBroadcastStreamNoneReader";
|
||||
|
||||
const char kFlowThreshold[] = "broadcast.flowThreshold";
|
||||
const char kStreamNoneReaderDelayMS[] = "broadcast.streamNoneReaderDelayMS";
|
||||
|
||||
|
||||
onceToken token([](){
|
||||
mINI::Instance()[kFlowThreshold] = 1024;
|
||||
mINI::Instance()[kStreamNoneReaderDelayMS] = 5 * 1000;
|
||||
},nullptr);
|
||||
} //namespace Broadcast
|
||||
|
||||
|
||||
@@ -116,9 +116,18 @@ extern const char kBroadcastFlowReport[];
|
||||
extern const char kBroadcastNotFoundStream[];
|
||||
#define BroadcastNotFoundStreamArgs const MediaInfo &args,TcpSession &sender
|
||||
|
||||
//某个流无人消费时触发,目的为了实现无人观看时主动断开拉流等业务逻辑
|
||||
extern const char kBroadcastStreamNoneReader[];
|
||||
#define BroadcastStreamNoneReaderArgs MediaSource &sender
|
||||
|
||||
//流量汇报事件流量阈值,单位KB,默认1MB
|
||||
extern const char kFlowThreshold[];
|
||||
|
||||
//流无人观看并且超过若干时间后才触发kBroadcastStreamNoneReader事件
|
||||
//默认连续5秒无人观看然后触发kBroadcastStreamNoneReader事件
|
||||
extern const char kStreamNoneReaderDelayMS[];
|
||||
|
||||
|
||||
//更新配置文件事件广播,执行loadIniConfig函数加载配置文件成功后会触发该广播
|
||||
extern const char kBroadcastReloadConfig[];
|
||||
#define BroadcastReloadConfigArgs void
|
||||
|
||||
Reference in New Issue
Block a user