1
This commit is contained in:
parent
5c007716a0
commit
811eb19d5d
@ -39,6 +39,26 @@ static void on_mqtt_connected()
|
|||||||
{
|
{
|
||||||
LOG_INFO("[MQTT] Connected to broker: " + g_app_config.mqtt.server_ip);
|
LOG_INFO("[MQTT] Connected to broker: " + g_app_config.mqtt.server_ip);
|
||||||
|
|
||||||
|
// --- ★关键!MQTT 重连后立即执行全局复位 ---
|
||||||
|
g_streaming = false; // 清除推流状态
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(g_dispatch_id_mutex);
|
||||||
|
g_dispatch_id.clear(); // 清除旧任务 ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 停掉所有流,清理 RTSP 状态
|
||||||
|
for (const auto &cam : g_app_config.cameras)
|
||||||
|
{
|
||||||
|
if (RTSPManager::is_streaming(cam.name))
|
||||||
|
{
|
||||||
|
RTSPManager::unmount_camera(cam);
|
||||||
|
LOG_WARN("[MQTT] Reconnected -> force unmount camera: " + cam.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// -------------------------------------------------------
|
||||||
|
|
||||||
|
send_heartbeat();
|
||||||
|
|
||||||
const auto &topics = g_app_config.mqtt.topics;
|
const auto &topics = g_app_config.mqtt.topics;
|
||||||
mqtt_client->subscribe(topics.video_down);
|
mqtt_client->subscribe(topics.video_down);
|
||||||
mqtt_client->subscribe(topics.substream_down);
|
mqtt_client->subscribe(topics.substream_down);
|
||||||
@ -90,13 +110,16 @@ static void on_mqtt_message_received(const std::string &topic, const std::string
|
|||||||
if (!cam.enabled)
|
if (!cam.enabled)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!RTSPManager::is_streaming(cam.name))
|
if (RTSPManager::is_streaming(cam.name))
|
||||||
{
|
{
|
||||||
|
RTSPManager::unmount_camera(cam);
|
||||||
|
LOG_WARN("[MQTT] Start-before-unmount: " + cam.name);
|
||||||
|
}
|
||||||
|
|
||||||
RTSPManager::mount_camera(cam);
|
RTSPManager::mount_camera(cam);
|
||||||
LOG_INFO("[MQTT] Started streaming: " + cam.name);
|
LOG_INFO("[MQTT] Started streaming: " + cam.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (status == 1)
|
else if (status == 1)
|
||||||
{
|
{
|
||||||
g_streaming = false;
|
g_streaming = false;
|
||||||
@ -160,6 +183,14 @@ static void on_mqtt_message_received(const std::string &topic, const std::string
|
|||||||
|
|
||||||
LOG_WARN("[MQTT] Reset command received, errorCode=" + errCode + ", des=" + des);
|
LOG_WARN("[MQTT] Reset command received, errorCode=" + errCode + ", des=" + des);
|
||||||
|
|
||||||
|
// --- ★★ 新增:重置全局 streaming 状态与 dispatchId ---
|
||||||
|
g_streaming = false;
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(g_dispatch_id_mutex);
|
||||||
|
g_dispatch_id.clear();
|
||||||
|
}
|
||||||
|
// ------------------------------------------------------
|
||||||
|
|
||||||
// 停止所有流,相当于复位
|
// 停止所有流,相当于复位
|
||||||
for (const auto &cam : g_app_config.cameras)
|
for (const auto &cam : g_app_config.cameras)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user