image2rtsp
是一个针对 ROS2 的功能包,用于将 ROS2 中的图像话题(sensor_msgs::msg::Image
)转换为 RTSP(Real-Time Streaming Protocol)视频流。RTSP 是一种广泛用于实时视频流的协议,常用于视频监控、远程查看等场景。以下是关于 image2rtsp
的详细介绍和使用方法:
功能概述
- 将 ROS2 中的图像话题(如
/camera/image_raw
)转换为 RTSP 视频流。 - 支持多种图像格式(如
rgb8
、rgba8
、bgr8
、mono8
等)。 - 生成的 RTSP 流可以通过 VLC、FFmpeg 或其他支持 RTSP 的播放器查看。
- 支持直接使用 USB 摄像头作为输入源,并支持压缩图像格式(开发分支中已添加)。
- 适用于 Ubuntu 20.04(ROS2 Foxy)和 Ubuntu 22.04(ROS2 Humble)。
安装方法
-
安装依赖
确保已安装 ROS2 和以下依赖项:sudo apt update sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstrtspserver-1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad
-
下载和编译
image2rtsp
mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src git clone https://github.com/maladzenkau/image2rtsp.git --single-branch cd ~/ros2_ws colcon build --packages-select image2rtsp source install/setup.bash
使用方法
-
配置参数
编辑parameters.yaml
文件以配置 RTSP 流的参数:camera: False # 是否使用 USB 摄像头 source: "v4l2src device=/dev/video0" # 摄像头设备路径 topic: "/color/image_raw" # 订阅的图像话题 mountpoint: "/back" # RTSP 流的挂载点 bitrate: "500" # 比特率 framerate: "30" # 帧率 caps_1: "video/x-raw,framerate=" caps_2: "/1,width=640,height=480" # 分辨率 port: "8554" # RTSP 端口 local_only: True # 是否仅本地访问
-
启动
image2rtsp
ros2 launch image2rtsp image2rtsp.launch.py
-
查看 RTSP 流
使用支持 RTSP 的播放器(如 VLC)查看生成的视频流。RTSP 流的默认地址为:rtsp://localhost:8554/back
如果
local_only
设置为False
,则可以通过网络访问,例如:rtsp://<服务器IP>:8554/back
示例
假设你有一个 USB 摄像头,并使用 usb_cam
功能包发布图像话题:
- 启动摄像头节点:
ros2 run usb_cam usb_cam_node_exe
- 启动
image2rtsp
:ros2 launch image2rtsp image2rtsp.launch.py
- 使用 VLC 打开
rtsp://localhost:8554/back
查看视频流。
注意事项
- 确保输入图像话题的格式与
image2rtsp
支持的格式一致(如rgb8
、bgr8
等)。 - 如果图像话题的帧率较高,可以调整
framerate
参数以匹配实际需求。 - 如果需要远程访问 RTSP 流,确保网络配置允许 RTSP 协议的传输。
项目地址
- GitHub 仓库:image2rtsp
针对不同ROS 版本
ros_rtsp
针对 ROS1(如 ROS Kinetic、ROS Melodic)开发,无法直接在 ROS2 中使用。image2rtsp
针对 ROS2(如 ROS2 Foxy、ROS2 Humble)开发,专为 ROS2 设计。
两者区别总结
特性 | ros_rtsp (ROS1) | image2rtsp (ROS2) |
---|---|---|
ROS 版本 | ROS1 | ROS2 |
输入源 | ROS1 图像话题 | ROS2 图像话题或 USB 摄像头 |
依赖框架 | GStreamer | GStreamer |
配置方式 | 手动配置 GStreamer 管道 | 通过 YAML 文件或命令行参数配置 |
压缩格式支持 | 需要手动配置 | 支持 H.264 等压缩格式 |
使用场景 | ROS1 环境 | ROS2 环境 |
选择建议
- 如果你使用的是 ROS1,选择
ros_rtsp
。 - 如果你使用的是 ROS2,选择
image2rtsp
。