From 5c007716a0b6c25a0e43aa8bbde1eb5ca78def60 Mon Sep 17 00:00:00 2001 From: cxh Date: Thu, 20 Nov 2025 11:09:40 +0800 Subject: [PATCH] 1 --- src/rtsp_manager.cpp | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/rtsp_manager.cpp b/src/rtsp_manager.cpp index 6cdd5b3..d688faf 100644 --- a/src/rtsp_manager.cpp +++ b/src/rtsp_manager.cpp @@ -258,29 +258,8 @@ bool RTSPManager::is_streaming(const std::string &cam_name) // 停止 server void RTSPManager::stop() { - // 先卸载所有挂载摄像头 - std::vector cams_to_unmount; - { - std::lock_guard lock(mounted_factories_mutex); - for (const auto &kv : mounted_factories) - cams_to_unmount.push_back(kv.first); - } - - for (const auto &cam_name : cams_to_unmount) - { - Camera cam; - cam.name = cam_name; - unmount_camera(cam); - } - - // 等待所有流停止(最多 5 秒) - auto deadline = std::chrono::steady_clock::now() + std::chrono::seconds(5); - while (is_any_streaming() && std::chrono::steady_clock::now() < deadline) - { - std::this_thread::sleep_for(std::chrono::milliseconds(50)); - } - - // 退出 main loop + // Ctrl-C 退出时,不再尝试逐路卸载摄像头, + // 只负责让 g_main_loop_run() 退出,线程自然收尾。 if (loop) { g_main_context_invoke(