This commit is contained in:
cxh 2025-10-17 16:00:35 +08:00
parent 23718bb584
commit b599ef6903

View File

@ -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<std::mutex> lock(streams_mutex);
for (auto &cam : g_app_config.cameras)
{
auto key = make_key(cam.name);
auto ctx = std::make_unique<StreamContext>();
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<std::mutex> 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<std::mutex> 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");