diff --git a/src/Record/Recorder.cpp b/src/Record/Recorder.cpp index 4b95d08a..36cb8121 100644 --- a/src/Record/Recorder.cpp +++ b/src/Record/Recorder.cpp @@ -97,8 +97,7 @@ public: RecorderHelper(const MediaSinkInterface::Ptr &recorder, vector &&tracks , bool bContinueRecord, const string &schema) { _recorder = recorder; _continueRecord = bContinueRecord; - _schema = schema; - attachTracks(std::move(tracks)); + attachTracks(std::move(tracks),schema); } ~RecorderHelper() { @@ -106,12 +105,13 @@ public: } // 附则于track上 - void attachTracks(vector &&tracks){ + void attachTracks(vector &&tracks, const string &schema){ if(isTracksSame(tracks)){ return; } resetTracks(); _tracks = std::move(tracks); + _schema = schema; for (auto &track : _tracks) { _recorder->addTrack(track); track->addDelegate(_recorder); @@ -240,9 +240,9 @@ private: return; } - if(it->second->getSchema() == schema){ + if(!it->second->isRecording() || it->second->getSchema() == schema){ // 绑定的协议一致,替换tracks - it->second->attachTracks(std::move(tracks)); + it->second->attachTracks(std::move(tracks),schema); } }