diff --git a/webrtc/WebRtcPusher.cpp b/webrtc/WebRtcPusher.cpp index 11fb1b30..0a62c0f3 100644 --- a/webrtc/WebRtcPusher.cpp +++ b/webrtc/WebRtcPusher.cpp @@ -61,7 +61,7 @@ bool WebRtcPusher::close(MediaSource &sender) { int WebRtcPusher::totalReaderCount(MediaSource &sender) { auto total_count = _push_src ? _push_src->totalReaderCount() : 0; if (_simulcast) { - std::lock_guard lock(_mtx); + std::lock_guard lock(_mtx); for (auto &src : _push_src_sim) { total_count += src.second->totalReaderCount(); } @@ -99,7 +99,7 @@ void WebRtcPusher::onRecvRtp(MediaTrack &track, const string &rid, RtpPacket::Pt } } else { //视频 - std::lock_guard lock(_mtx); + std::lock_guard lock(_mtx); auto &src = _push_src_sim[rid]; if (!src) { const auto& stream = _push_src->getMediaTuple().stream; diff --git a/webrtc/WebRtcPusher.h b/webrtc/WebRtcPusher.h index 4c332a35..8d309395 100644 --- a/webrtc/WebRtcPusher.h +++ b/webrtc/WebRtcPusher.h @@ -67,7 +67,7 @@ private: //推流所有权 std::shared_ptr _push_src_ownership; //推流的rtsp源,支持simulcast - std::mutex _mtx; + std::recursive_mutex _mtx; std::unordered_map _push_src_sim; std::unordered_map > _push_src_sim_ownership; };