// rtsp_manager.hpp #pragma once #include #include #include "app_config.hpp" #include // RTSP 管理器,负责启动/关闭 RTSP 服务器 class RTSPManager { public: static void init(); static void start(const std::vector &cameras); static void stop(); // === 按需挂载/卸载摄像头 === static void mount_camera(const Camera &cam); static void unmount_camera(const Camera &cam); // === 查询播放状态 === static bool is_streaming(const std::string &cam_name); private: static GMainLoop *loop; static GstRTSPServer *server; // 播放状态表 static std::unordered_map streaming_status; // 创建 MediaFactory static GstRTSPMediaFactory *create_media_factory(const Camera &cam); // --- 新增:在 main loop 中执行挂载/卸载 --- static gboolean mount_camera_in_main(gpointer data); static gboolean unmount_camera_in_main(gpointer data); // --- 已挂载的 factory 指针表(用于卸载) --- static std::unordered_map mounted_factories; static std::mutex mounted_factories_mutex; };