使用ROS中的gscam测量rtsp视频流的接收视频帧速率

时间:2020-06-10 07:41:32

标签: gstreamer ros rtsp

在我的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主题。

谢谢!

0 个答案:

没有答案