From b599ef6903bb638c333c4ec990eba83c8ad17077 Mon Sep 17 00:00:00 2001 From: cxh Date: Fri, 17 Oct 2025 16:00:35 +0800 Subject: [PATCH] 1 --- src/rtmp_manager.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/rtmp_manager.cpp b/src/rtmp_manager.cpp index 8ff3fa2..d1916bc 100644 --- a/src/rtmp_manager.cpp +++ b/src/rtmp_manager.cpp @@ -215,21 +215,6 @@ void RTMPManager::stream_loop(Camera cam, StreamContext *ctx) } // ========== 启停与状态 ========== -void RTMPManager::start_all() -{ - LOG_INFO("[RTMP] Starting all record streams..."); - std::lock_guard lock(streams_mutex); - - for (auto &cam : g_app_config.cameras) - { - auto key = make_key(cam.name); - auto ctx = std::make_unique(); - ctx->running.store(true); - ctx->thread = std::thread([cam, ptr = ctx.get()]() { stream_loop(cam, ptr); }); - streams.emplace(key, std::move(ctx)); - } -} - void RTMPManager::start_all() { LOG_INFO("[RTMP] Starting all record streams..."); @@ -260,6 +245,22 @@ void RTMPManager::start_all() } } +void RTMPManager::stop_all() +{ + std::lock_guard lock(streams_mutex); + for (auto &kv : streams) kv.second->running.store(false); + for (auto &kv : streams) + if (kv.second->thread.joinable()) kv.second->thread.join(); + streams.clear(); +} + +bool RTMPManager::is_streaming(const std::string &cam_name) +{ + std::lock_guard lock(streams_mutex); + auto it = streams.find(make_key(cam_name)); + return (it != streams.end() && it->second->status.running); +} + std::string RTMPManager::get_stream_url(const std::string &cam_name) { std::string ip = get_ip_address("enP2p33s0");