程序退出前停止一切录制

This commit is contained in:
xiongziliang 2019-12-04 19:15:48 +08:00
parent 728fd55e0c
commit 33047ddc94
4 changed files with 13 additions and 0 deletions

View File

@ -336,6 +336,7 @@ int start_main(int argc,char *argv[]) {
}
unInstallWebApi();
unInstallWebHook();
Recorder::stopAll();
//休眠1秒再退出防止资源释放顺序错误
InfoL << "程序退出中,请等待...";
sleep(1);

View File

@ -206,6 +206,11 @@ public:
_recorder_map.erase(getRecorderKey(vhost, app, stream_id));
}
void stopAll(){
lock_guard<decltype(_recorder_mtx)> lck(_recorder_mtx);
_recorder_map.clear();
}
private:
MediaSourceWatcher(){
NoticeCenter::Instance().addListener(this,Broadcast::kBroadcastMediaChanged,[this](BroadcastMediaChangedArgs){
@ -352,4 +357,9 @@ void Recorder::stopRecord(Recorder::type type, const string &vhost, const string
}
}
void Recorder::stopAll() {
MediaSourceWatcher<type_hls>::Instance().stopAll();
MediaSourceWatcher<type_mp4>::Instance().stopAll();
}
} /* namespace mediakit */

View File

@ -56,6 +56,7 @@ public:
static status getRecordStatus(type type, const string &vhost, const string &app, const string &stream_id);
static int startRecord(type type, const string &vhost, const string &app, const string &stream_id,bool waitForRecord, bool continueRecord);
static void stopRecord(type type, const string &vhost, const string &app, const string &stream_id);
static void stopAll();
private:
Recorder() = delete;
~Recorder() = delete;

View File

@ -354,6 +354,7 @@ int main(int argc,char *argv[]) {
signal(SIGHUP, [](int) { loadIniConfig(); });
sem.wait();
Recorder::stopAll();
lock_guard<mutex> lck(s_mtxFlvRecorder);
s_mapFlvRecorder.clear();
return 0;