// rtsp_manager.hpp #pragma once #include #include #include "app_config.hpp" #include #include #include 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 GMainContext *main_context; static GstRTSPServer *server; static std::unordered_map streaming_status; // 工厂创建函数 static GstRTSPMediaFactory *create_media_factory(const Camera &cam); // --- 把挂载/卸载函数变成私有静态成员 --- static gboolean mount_camera_in_main(gpointer data); static gboolean unmount_camera_in_main(gpointer data); // --- 静态 mutex 和工厂表 --- static std::unordered_map mounted_factories; static std::mutex mounted_factories_mutex; };