Repository Summary

Description RTSP streaming for ROS image topics
Checkout URI https://github.com/fkie/rtsp_image_transport.git
VCS Type git
VCS Version ros2
Last Updated 2025-07-30
Dev Status MAINTAINED
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rtsp_image_transport 2.0.1

README

RTSP Image Transport for ROS

Overview

This package allow ROS nodes to publish and subscribe image topics using the Real Time Streaming Protocol (RTSP). Unlike regular image_transport plugins, the rtsp_image_transport does not transmit image data in-band. The publisher merely publishes a latched std_msgs/String message with the URL of an RFC 2326 compliant RTSP video stream server, from where the actual image data is served. The subscriber will listen for URLs on the ROS topic and automatically (re-)connect to the corresponding location.

Use Cases

rtsp_image_transport is intended for streaming live videos to one or more users. The RTSP server supports multicast transmission, so it will potentially save a huge amount of bandwidth if many clients are viewing the same video stream.

The rtsp_image_transport plugin is compatible with many commercially available IP cameras. You can use the publish_rtsp_stream node to create an image topic with RTSP transport that reuses the existing RTSP stream.

Limitations

If the image source is not a continuous video stream with roughly constant frame rate, you may experience problems such as session timeouts or degraded image quality.

rtsp_image_transport is not suitable for image data that is to be consumed by image processing algorithms. The lossy compression introduces artifacts which may not be visible to the human eye but interfere with many algorithms nevertheless.

You cannot use rosbag2 to record data from rtsp_image_transport; you will just end up with a bunch of useless URL string messages.

Supported Formats

rtsp_image_transport uses the Live555 library for its RTSP server and client implementation and the FFmpeg library for video compression. Starting with FFmpeg 4, some codecs are hardware acceleratable. The following table summarizes the options, subject to availability in your FFmpeg version and compatible hardware:


           Software   NVIDIA     QSV[^1]     VAAPI      OMX   ------------ ---------- ---------- ----------- ---------- ----------   H.264        Yes        Yes        Yes         Encoding   Encoding

H.265 Yes Yes Yes Encoding No

MPEG-4 Yes Decoding No Encoding No

VP8 Yes Decoding Decoding Encoding No

VP9 Yes Decoding Yes Encoding No

MJPEG1 Decoding Decoding Decoding No No ——————————————————————–

  1. rtsp_image_transport cannot create Motion JPEG (MJPEG) streams, only receive them for backwards compatibility with some ancient IP cameras. If you really want to have independently compressed JPEG frames for your video stream, you can use the compressed_image_transport with JPEG compression instead. 

Repository Summary

Description RTSP streaming for ROS image topics
Checkout URI https://github.com/fkie/rtsp_image_transport.git
VCS Type git
VCS Version ros2
Last Updated 2025-07-30
Dev Status MAINTAINED
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rtsp_image_transport 2.0.1

README

RTSP Image Transport for ROS

Overview

This package allow ROS nodes to publish and subscribe image topics using the Real Time Streaming Protocol (RTSP). Unlike regular image_transport plugins, the rtsp_image_transport does not transmit image data in-band. The publisher merely publishes a latched std_msgs/String message with the URL of an RFC 2326 compliant RTSP video stream server, from where the actual image data is served. The subscriber will listen for URLs on the ROS topic and automatically (re-)connect to the corresponding location.

Use Cases

rtsp_image_transport is intended for streaming live videos to one or more users. The RTSP server supports multicast transmission, so it will potentially save a huge amount of bandwidth if many clients are viewing the same video stream.

The rtsp_image_transport plugin is compatible with many commercially available IP cameras. You can use the publish_rtsp_stream node to create an image topic with RTSP transport that reuses the existing RTSP stream.

Limitations

If the image source is not a continuous video stream with roughly constant frame rate, you may experience problems such as session timeouts or degraded image quality.

rtsp_image_transport is not suitable for image data that is to be consumed by image processing algorithms. The lossy compression introduces artifacts which may not be visible to the human eye but interfere with many algorithms nevertheless.

You cannot use rosbag2 to record data from rtsp_image_transport; you will just end up with a bunch of useless URL string messages.

Supported Formats

rtsp_image_transport uses the Live555 library for its RTSP server and client implementation and the FFmpeg library for video compression. Starting with FFmpeg 4, some codecs are hardware acceleratable. The following table summarizes the options, subject to availability in your FFmpeg version and compatible hardware:


           Software   NVIDIA     QSV[^1]     VAAPI      OMX   ------------ ---------- ---------- ----------- ---------- ----------   H.264        Yes        Yes        Yes         Encoding   Encoding

H.265 Yes Yes Yes Encoding No

MPEG-4 Yes Decoding No Encoding No

VP8 Yes Decoding Decoding Encoding No

VP9 Yes Decoding Yes Encoding No

MJPEG1 Decoding Decoding Decoding No No ——————————————————————–

  1. rtsp_image_transport cannot create Motion JPEG (MJPEG) streams, only receive them for backwards compatibility with some ancient IP cameras. If you really want to have independently compressed JPEG frames for your video stream, you can use the compressed_image_transport with JPEG compression instead.