汽车网站 源码,app的制作过程,成都教育行业网站建设,下载手机商城app下载安装无线网络#xff0c;低带宽场景。不能直接转发ROS raw image#xff08;10MB/s#xff09;#xff0c;而要压缩#xff08;编码#xff09;后再传输。可以用rtsp的udp传输或者直接传输话题#xff0c;压缩方法有theora#xff08;ROS image_transport默认支持#xff…无线网络低带宽场景。不能直接转发ROS raw image10MB/s而要压缩编码后再传输。可以用rtsp的udp传输或者直接传输话题压缩方法有theoraROS image_transport默认支持软件编解码或者h264自己用gstreamer/ffmpeg/opencv写并结合实际可用的硬件编码器进行编码
视频流来源发送方案接收方案优点缺点 rtsp h264已编码 IP摄像头 转发rtsp推流 rtsp拉流 h264解码 gstreamer/ffmpeg 无额外开销无法再压缩、修改画面 rtsp拉流 h264解码 此处应有ROS image话题 h264编码gstreamer rtsp推流 rtsp拉流 h264解码 gstreamer/ffmpeg 在原rtsp h264流基础上可以再压缩需要额外编码 ROS话题 image_transport republish 已经是的可省略 传输theora话题 接收theora话题 image_transport解码 republish image话题仅rqt查看可省略 通用软件编码;无硬件加速 h264编码gstreamer rtsp推流 rtsp拉流 h264解码 gstreamer/ffmpeg 硬件加速专用 image_transport republish输入话题是sensor_msgs/Image类型的输出压缩的各类话题compressed和theora默认适用于image_raw话题不是由image_transport产生的情况。
rosrun image_transport republish raw in:/usb_cam/image_raw out:/usb_cam/image_raw/theora image_transport republish输入话题是theora压缩过的输出解压的raw话题
rosrun image_transport republish theora in:camera/image raw out:camera/image_decompressed
相关资源
一些推流方案合集rtsp_除了ffmpeg推流-CSDN博客
rocon_rtsp_camera_relay读取rtsp流发布ROS图像话题网络摄像头ROS驱动、拉流
rocon_rtsp_camera_relay - ROS Wiki第八章.ROS-RTSP流相机功能包 - HOMER图数传
这个包比较老了拉流效果如何能否用硬件解码器有待验证
gscamgstramer读取usb/web camera发布ROS图像话题网络摄像头ROS驱动、拉流
GitHub - ros-drivers/gscam: ROS Camera driver for GStreamer-based video streams.gscam - ROS Wiki
可以用gscam这是一个gstreamer框架的ROS包读取的视频流来源可以是网络摄像头rtspsrc或者usb摄像头v4lc反正都是gstreamer框架的可以选择解码器比如jetson支持的nvv4l2decoder解码器解码发布到sensor_msg/Image话题。
rtsp拉流nvv4l2decoder解码发布ROS图像话题网络摄像头ROS驱动、拉流
src/amov_gimbal_image_node.cpp · AMOVLAB/Gimbal-SDK-ROS - Gitee.com
这里是opencv拉rtsp流h264压缩了的性能可能不如gstreamer或者ffmpeg用的是xavier NX上的nvv4l2decoder硬件解码器对h264数据进行解码appsink syncfalse表示没有同步capture.read(frame);不会阻塞cpu占用高
video_stream_opencv 发布ROS图像话题网络摄像头ROS驱动、拉流
video_stream_opencv - ROS Wiki
读取ROS图像话题omxh264enc编码gstreamer rtsp推流发送方案低延时
Prometheus/Modules/object_detection/py_nodes/rtsp_stream/gstreamer_rtsp_stream.py at main · amov-lab/Prometheus · GitHub
在xavier NX上测试过。读取ROS图像话题然后用xavier NX自带的omxh264enc硬件编码器老旧现在应该换成nvv4l2encoder编码成h264的rtp udp数据包发送然后用gstreamer启动rtsp server。asyncfalse仍然是关闭了同步。 用rtsp动态改变推流参数
ros_rtsp读取ROS话题gstreamer rtsp推流发送方案
https://blog.csdn.net/qq_42257666/article/details/130559000 ffmpeg_image_transportROS image和ffmpeg压缩解压的转换
GitHub - daniilidis-group/ffmpeg_image_transport: image transport that uses libavcodec for compression
可以用到硬件加速ffmpeg自带的支持的硬件编解码器可能是PC端的orin NX上还是用gstreamer的nvv4l2编解码器比较好。
rtsp_image_transportROS image和rtsp流的转换拉流、推流
GitHub - fkie/rtsp_image_transport: RTSP streaming for ROS image topics
解压和压缩用的是ffmpeg支持硬件加速。既能拉流成ROS图像也能推流ROS图像比较全面。但由于是用的ffmpeg进行编解码支持的硬件编解码器可能是PC端的orin NX上还是用gstreamer的nvv4l2编解码器比较好。
rtsp拉流方法地面端、rtsp拉流ROS驱动
1. 程序VLC Media Player直接播放
2. opencv解码还是调用的ffmpeg如何设置解码器为硬件解码器
3. gstreamer默认是通过设置 decodebin 元素GStreamer 会自动选择解码器也可以设置硬件解码器nvv4l2decoder。
4. ffmpeg自动调用H.264 解码器libx264 或 libavcodec如何设置解码器为硬件解码器
发送端RTSP 流重新封装并转发
如果你的发送端需要从 RTSP 流获取视频数据并转发可以使用以下 GStreamer 管道接收 RTSP 流并通过 UDP 传输 H.264 流
gst-launch-1.0 rtspsrc locationrtsp://rtsp-url ! rtph264depay ! rtph264pay ! udpsink host127.0.0.1 port5000适用于转发rtsp推流到地面端的情况不用编码解码。
结论
1. 读取摄像头方案
如果是usb/csi摄像头一般会有驱动realsense driver或者usb_cam或者gscam最好有用到硬件解码的发布出ROS话题。如果是rtsp流且h264压缩了的网络摄像头吊舱需要用opencv / gstreamer / ffmpeg读取rtsp流解码再发布出ROS话题。最好解码用到硬件解码器。
2. 机载推流发送方案
最推荐读取ROS话题用opencv / gstreamer / ffmpeg进行h264编码最好用硬件编码器。然后用gstreamer推送rtsp流。需要自己写程序。最简单如果摄像头是rtsp流的且h264压缩的合适可以不经过解码编码直接转发这路rtsp流到地面端。之所以要转发而不是直接用这路rtsp流是因为这路rtsp应该是用于机载读取发布ROS话题可能不能再给地面端拉流。这种方法缺点是无法控制压缩参数而且无法显示程序处理后的图像比如加上一些识别框的图。方便调试此法注意theora话题刚订阅时会发送header一次必须要传输到接收端读取ROS话题用image_transport republish产生theora话题已经有的不需要然后用swarm_ros_bridge转发theora话题到地面站。问题是theora编码是软件cpu的用不了硬件加速地面站看到的视频可能延迟比较大同时swarm_ros_bridge建立连接后暂时不支持取消地面端只能杀掉swarm_ros_bridge节点来停止传输。 关于theora可以查看usb_cam ros包话题说明image transport包使用-CSDN博客
3. 地面端拉流接收方案
最推荐ubuntu上apt安装vlc播放器直接可以看rtsp流。方便调试rqt_image_view或者rviz查看theora话题。 关于theora可以查看usb_cam ros包话题说明image transport包使用-CSDN博客用opencv / gstreamer / ffmpeg读取rtsp流解码写QT显示窗口可以加入点选等功能。