From 8ed5b295fd939cc46c5a5ee051e224a21eaa29af Mon Sep 17 00:00:00 2001 From: cxh Date: Fri, 21 Nov 2025 16:23:56 +0800 Subject: [PATCH] 1 --- src/rtsp_manager.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/rtsp_manager.cpp b/src/rtsp_manager.cpp index 96a97b7..7966723 100644 --- a/src/rtsp_manager.cpp +++ b/src/rtsp_manager.cpp @@ -32,32 +32,30 @@ GstRTSPMediaFactory *RTSPManager::create_media_factory(const Camera &cam) std::string launch_str = "( v4l2src device=" + cam.device + - " io-mode=4 is-live=true " - " ! video/x-raw,format=NV12,width=" + - std::to_string(out_width) + + " ! video/x-raw,format=NV12,width=" + std::to_string(out_width) + ",height=" + std::to_string(out_height) + ",framerate=" + std::to_string(cam.fps) + "/1" - " ! queue max-size-buffers=1 leaky=downstream" + " ! queue max-size-time=100000000" + " ! videoconvert" " ! mpph264enc rc-mode=cbr bps=" + std::to_string(cam.bitrate) + - " gop=" + std::to_string(cam.fps) + " b-frames=0" - " ! h264parse config-interval=1" - " ! rtph264pay name=pay0 pt=96 config-interval=1 )"; + " gop=" + std::to_string(cam.fps) + + " profile=high" + " ! h264parse" + " ! rtph264pay name=pay0 pt=96 )"; GstRTSPMediaFactory *factory = gst_rtsp_media_factory_new(); gst_rtsp_media_factory_set_launch(factory, launch_str.c_str()); - gst_rtsp_media_factory_set_shared(factory, TRUE); - - // ★★ 关键修复:禁用 preroll → Live pipeline 必须加这行!! - gst_rtsp_media_factory_set_latency(factory, 0); - gst_rtsp_media_factory_set_suspend_mode(factory, GST_RTSP_SUSPEND_MODE_RESET); - g_signal_connect_data(factory, "media-configure", + // ⭐ 修复点:最后一个参数必须用 GConnectFlags 类型 + g_signal_connect_data(factory, + "media-configure", G_CALLBACK(on_media_created), g_strdup(cam.name.c_str()), - (GClosureNotify)g_free, 0); + (GClosureNotify)g_free, + (GConnectFlags)0); return factory; }