diff --git a/server/WebApi.cpp b/server/WebApi.cpp index 8eb5417..839df9d 100644 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -1155,6 +1155,8 @@ void installWebApi() { } void unInstallWebApi(){ + RtpSelector::Instance().clear(); + { lock_guard<recursive_mutex> lck(s_proxyMapMtx); s_proxyMap.clear(); @@ -1164,6 +1166,7 @@ void unInstallWebApi(){ lock_guard<recursive_mutex> lck(s_ffmpegMapMtx); s_ffmpegMap.clear(); } + { #if defined(ENABLE_RTPPROXY) lock_guard<recursive_mutex> lck(s_rtpServerMapMtx); diff --git a/src/Rtp/RtpSelector.cpp b/src/Rtp/RtpSelector.cpp index 0ab553f..b895de2 100644 --- a/src/Rtp/RtpSelector.cpp +++ b/src/Rtp/RtpSelector.cpp @@ -15,6 +15,11 @@ namespace mediakit{ INSTANCE_IMP(RtpSelector); +void RtpSelector::clear(){ + lock_guard<decltype(_mtx_map)> lck(_mtx_map); + _map_rtp_process.clear(); +} + bool RtpSelector::inputRtp(const Socket::Ptr &sock, const char *data, int data_len, const struct sockaddr *addr,uint32_t *dts_out) { //使用ssrc为流id diff --git a/src/Rtp/RtpSelector.h b/src/Rtp/RtpSelector.h index 33a0125..54be19c 100644 --- a/src/Rtp/RtpSelector.h +++ b/src/Rtp/RtpSelector.h @@ -56,6 +56,11 @@ public: static RtpSelector &Instance(); /** + * 清空所有对象 + */ + void clear(); + + /** * 输入多个rtp流,根据ssrc分流 * @param sock 本地socket * @param data 收到的数据