diff --git a/server/WebApi.cpp b/server/WebApi.cpp index 39ecb6b1..cb3ca607 100755 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -851,7 +851,7 @@ void installWebApi() { return; } auto server = it->second; - server->pauseRtpCheck(); + server->pauseRtpCheck(allArgs["stream_id"]); val["hit"] = 1; }); @@ -866,7 +866,7 @@ void installWebApi() { return; } auto server = it->second; - server->resumeRtpCheck(); + server->resumeRtpCheck(allArgs["stream_id"]); val["hit"] = 1; }); diff --git a/src/Rtp/RtpServer.cpp b/src/Rtp/RtpServer.cpp index b53f9254..22fb4ffb 100644 --- a/src/Rtp/RtpServer.cpp +++ b/src/Rtp/RtpServer.cpp @@ -160,15 +160,30 @@ uint16_t RtpServer::getPort() { return _udp_server ? _udp_server->get_local_port() : 0; } -void RtpServer::pauseRtpCheck(){ +void RtpServer::pauseRtpCheck(const string &stream_id){ if(_rtp_process) _rtp_process->setStopCheckRtp(true); + else{ + if(!stream_id.empty()){ + auto rtp_process = RtpSelector::Instance().getProcess(stream_id,false); + if(rtp_process) + rtp_process->setStopCheckRtp(true); + } + } + } -void RtpServer::resumeRtpCheck(){ +void RtpServer::resumeRtpCheck(const string &stream_id){ if(_rtp_process) _rtp_process->setStopCheckRtp(false); - + else{ + //解决不指定流或者TCP收流无法暂停 + if(!stream_id.empty()){ + auto rtp_process = RtpSelector::Instance().getProcess(stream_id,false); + if(rtp_process) + rtp_process->setStopCheckRtp(false); + } + } } }//namespace mediakit diff --git a/src/Rtp/RtpServer.h b/src/Rtp/RtpServer.h index 9f8668ae..afab76ca 100644 --- a/src/Rtp/RtpServer.h +++ b/src/Rtp/RtpServer.h @@ -60,12 +60,12 @@ public: /** * 暂停Rtp服务的RTP流检测 */ - void pauseRtpCheck(); + void pauseRtpCheck(const string &stream_id = ""); /** * 恢复Rtp服务的RTP流检测 */ - void resumeRtpCheck(); + void resumeRtpCheck(const string &stream_id = ""); protected: Socket::Ptr _udp_server;