// main.cpp #include "app_config.hpp" #include "rtsp_manager.hpp" #include "logger.hpp" #include "mqtt_client_wrapper.hpp" #include #include #include std::atomic g_running(true); void signalHandler(int signum) { g_running = false; RTSPManager::stop(); } int main() { signal(SIGINT, signalHandler); signal(SIGPIPE, SIG_IGN); // 初始化日志文件 Logger::set_log_to_file(get_executable_dir_file_path("app.log")); try { // 从可执行文件所在目录读取配置文件 g_app_config = AppConfig::load_from_file(get_executable_dir_file_path("config.json")); } catch (const std::exception &e) { LOG_ERROR(std::string("Failed to load config: ") + e.what()); return -1; } // 启动 RTSP RTSPManager::init(); std::thread rtsp_thread([&]() { RTSPManager::start(g_app_config.cameras); }); // 启动 MQTT 客户端线程 std::thread mqtt_thread(mqtt_client_thread_func); // 等待退出信号 rtsp_thread.join(); mqtt_thread.join(); return 0; }