在我的Ubuntu 18.04中,我正在从IP摄像机接收视频,并使用ROS melodic中的gscam将视频传输到rtsp服务器。这是启动文件中gscam nodelet的代码:
<node pkg="nodelet" type="nodelet"
name="nodelet_manager" args="manager"
output="screen"/>
<node pkg="nodelet" type="nodelet"
name="$(arg cam_name)"
args="load gscam/GSCamNodelet nodelet_manager"
output="screen">
<param name="camera_name" value="$(arg cam_name)"/>
<param name="camera_info_url" value="$(arg camera_info_url)"/>
<param name="frame_id" value="$(arg cam_name)"/>
<param name="sync_sink" value="true" />
<param name="use_gst_timestamps" value="true" />
<param name="gst_clock_type" value="0" /> <!-- GST_CLOCK_TYPE_REALTIME -->
<param name="reopen_on_eof" value="true" />
<!-- choose appropriate gstreamer pipeline -->
<param name="gscam_config"
value="gst-launch-1.0 rtspsrc location=$(arg rtsp_stream) latency=$(arg latency) ! decodebin
! videoconvert ! video/x-raw,format=RGB" />
<remap from="camera/image_raw" to="$(arg cam_name)/image_raw" />
</node>
现在,我想测量摄像机的接收和丢弃帧速率,并且从我的研究中我发现有一个用于此目的的gstreamer元素fpsdisplay
。
如果我从控制台:gst-launch-1.0 rtspsrc location=rtsp://192.168.17.168:553/stream latency=400 ! decodebin ! videoconvert ! fpsdisplaysink
尝试此启动操作,则它将在弹出的窗口上显示帧速率,但是如果我想在上述gscam nodelet的启动文件中的管道中使用fpsdisplay,如下所示:
<param name="gscam_config"
value="gst-launch-1.0 rtspsrc location=$(arg rtsp_stream) latency=$(arg latency) ! fpsdisplaysink ! decodebin ! videoconvert !
video/x-raw,format=RGB" />
然后它不起作用,不会发布任何主题。
通过文档,我无法理解如何在fpsdisplaysink
管道中合并gscam
。
那么该元素如何与管道结合在一起?
或者,如果不能明确地通过fpsdisplaysink
获得接收的帧率,那么该怎么做呢?
我的主要目标不是在屏幕上显示fps,而是获取这些值,然后将其发布为ROS主题。
谢谢!