ros_rtsp订阅Image类型topic转换为rtsp视频流

文章目录

  • 一、安装环境
  • 二、在catkin工作空间中构建
  • 三、设置流
  • 四、推出视频流
  • 五、验证视频流
    • 1、安装vlc拉流
    • 2、安装gstreamer拉流
    • 3、安装FFmpeg拉流

在这里插入图片描述

一、安装环境

  • ROS

  • gstreamer development libs,包括base、good、bad和rtspserver:


sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstrtspserver-1.0-dev 

二、在catkin工作空间中构建

导航进入到我们的catkin工作空间下的 src 目录:

cd ~/Demo/rtspServer/src

从仓库克隆软件包

git clone https://github.com/CircusMonkey/ros_rtsp.git

返回工作空间的根目录,编译软件包:

cd ..
catkin_make pkg:=ros_rtsp

在这里插入图片描述

三、设置流

修改config/stream_setup.yaml 来适配需要的流,你可以添加任意数量的流。主要修改的信息为source、framerate、width和height,其中framrate非常重要,10是最佳数字,不要在意你相机的真实fps。

# Set up your streams to rtsp here.
streams: # Cannot rename - must leave this as is.# Example v4l2 camera streamstream-x:                 # Can name this whatever you choosetype: cam               # cam - Will not look in ROS for a image. The video src is set in the 'source' parameter.codec: cam              # codec - Which codec to encode the stream. Currently support `x264enc` and `nvh264enc`source: "v4l2src device=/dev/video0 ! videoconvert ! videoscale ! video/x-raw,framerate=15/1,width=1280,height=720"  # Should work with most valid gstreamer piplines (ending with raw video) mountpoint: /front      # Choose the mountpoint for the rtsp stream. This will be able to be accessed from rtsp://<server_ip>/frontbitrate: 800            # bitrate for the h264 encoding.# Example ROS Image topic streamthis-is-stream-42:        # Can name this whatever you choosetype: topic             # topic - Image is sourced from a sensor_msgs::Image topiccodec: cam              # codec - Which codec to encode the stream. Currently support `x264enc` and `nvh264enc`source: /usb_cam0/image_raw  # The ROS topic to subscribe tomountpoint: /back      # Choose the mountpoint for the rtsp stream. This will be able to be accessed from rtsp://<server_ip>/backcaps: video/x-raw,framerate=10/1,width=640,height=480  # Set the caps to be applied after getting the ROS Image and before the x265 encoder.bitrate: 500            # bitrate for the h264 encoding.

在这里插入图片描述

四、推出视频流

启动ros核心,再启动launch文件。

roscore
roslaunch ros_rtsp rtsp_streams.launch

五、验证视频流

1、安装vlc拉流

sudo apt-get install vlc

VLC可视化界面打开网络串流即可。

2、安装gstreamer拉流

检测一个流是否工作最好的方式是使用gst-launch-1.0, 你需要在你的客户端系统安装gstreamer,具体查看gstreamer.freedesktop.org

在这里插入图片描述

安装好之后,输入下面命令进行检测:

gst-launch-1.0 -v rtspsrc location=rtsp://<server_ip>:8554/<your_stream_mountpoint> drop-on-latency=true use-pipeline-clock=true do-retransmission=false latency=0 protocols=GST_RTSP_LOWER_TRANS_UDP ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink sync=true

3、安装FFmpeg拉流

ffplay -i rtsp://<server_ip>:8554/<your_stream_mountpoint>

别人是你两倍的工作量,你却花别人两倍的时间做完,你=1/4别人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/108218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adaptive AUTOSAR CM模块介绍(六)

Event订阅和缓存原理 Event事件并不是proxy定义了就可以使用&#xff0c;需要Event事件的订阅&#xff0c;一旦订阅成功了&#xff0c;有event事件的时候&#xff0c;就会收到订阅的消息。 /* brief The application expects the CM to subscribe the event. param maxSampleC…

Mybatis Plus入门进阶:特殊符号、动态条件、公共语句、关联查询、多租户插件

前言 Mybatis Plus入门进阶&#xff1a;特殊符号、动态条件、公共语句、关联查询、多租户插件 隐藏问题&#xff1a;批量插入saveBatch 文章目录 前言注意点动态条件xml公共语句关联查询动态表名使用自定义函数主键生成策略saveBatch插件&#xff1a;多租户TenantLineInnerInte…

linux 上安装tomcat ,并将tomcat注册为服务

参考&#xff1a;https://www.cnblogs.com/DevinZhang1990/p/12795565.html 下载一个tomcat服务器&#xff0c;并上传到服务器&#xff0c;解压到一个路径 如路径为: /server/apache-tomcat-8.0.52 即 $Tomcat_HOME /server/apache-tomcat-8.0.52 将tomcat加到linux服务中 2.…

php 中 try catch 不起作用解决,捕获不到异常

错误写法 try{ $i 1/0; }catch(Exception $e) { echo “error”; } 错误写法 最后发现问题在Exception这个类上&#xff01; 需要在前面加上 \ &#xff08;反斜杠&#xff09;才起作用 像这样 try{$i 1/0; }catch(\Exception $e) {echo "error"; }

Java 代码 实现 字符串去掉左边空格 字符串去掉右边空格

Java 代码 实现 字符串去掉左边空格 字符串去掉右边空格 编写工具类 StringUtils 编写工具类 package com.lihaozhe.util.string;/*** 字符串工具类** author 李昊哲* version 1.0* create 2023/10/17*/ public class StringUtils {/*** 去除字符串左边的的空格** param strin…

智能垃圾桶丨悦享便捷生活

垃圾桶是人们日常生活所必不可少的必需品&#xff0c;它让生活中所产生的垃圾有了一个正确的存放地方。随着生产技术的迅速发展&#xff0c;垃圾桶也得以更新换代。由最初的简单式的圆筒式垃圾桶&#xff0c;到现在出现的感应式垃圾桶、智能语音控制垃圾桶&#xff0c;垃圾桶也…

2023年中国自动驾驶卡车市场发展趋势分析:自动驾驶渗透率快速增长[图]

自动驾驶卡车的技术原理是通过电脑算法控制车辆行驶&#xff0c;辅助驾驶员完成任务。其实现方式主要是基于传感器和计算处理技术。自动驾驶卡车可以随时感知周围环境&#xff0c;灵活避障&#xff0c;自适应调整行驶路径&#xff0c;相比之下传统卡车需要驾驶员进行手动操作&a…

【python_学习笔记】

TypeError: ‘numpy._DTypeMeta‘ object is not subscriptable import torch# 创建一个形状为 (3, 4, 5) 的张量 tensor torch.randn(3, 4, 5)# 使用 permute 重新排列维度&#xff0c;例如 (3, 5, 4) permuted_tensor tensor.permute(0, 2, 1)print("Original Tensor…

Switch模拟器-Ryujinx(龙神模拟器)安装教程

Ryujinx是由gdkchan带领团队运用C#语言创建并发布在GitHub平台的Switch开源模拟器. 系 统 要 求 内存8 GB RAM及以上 显卡支持Vulkan、OpenGL版本4.5及以上 64位系统 Windows 10 RS4&#xff08;Redstone 4&#xff0c;版本 1803&#xff09;或更高版本 软 件 教 程 第一…

Puppeteer监听网络请求、爬取网页图片(二)

Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09; Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09;一、爬取需求二、实现讲解三、效果查看 一、爬取需求 首先打开浏览器&#xff0c;打开指定网站监听网站发出的所有请求&#xff0c;记录请求&a…

前端版本控制工具,常见的Git 和SVN

目录 前言GitGit简介Git的优势Git常用指令常见的Git服务 SVN (Subversion)SVN简介SVN的优势SVN常用指令SVN与Git的区别 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你…

从Docker初识K8S

什么是Docker&#xff1f; 假设现在有一个服务场景&#xff0c;你是一个程序猿&#xff0c;你编写代码实现一个机器人喝水的功能&#xff0c;然后你需要将这份代码部署到每个机器人身上&#xff0c;你部署的时候需要一个个安装代码所需的依赖包&#xff0c;然后运行测试你的代码…

影响多用户商城系统价格的因素有哪些?

多用户商城系统作为电商行业不可或缺的重要工具&#xff0c;其价格是众多商家关注的焦点。下面就影响多用户商城系统价格的因素有哪些作一些简单的介绍&#xff0c;希望对大家有所帮助(仅供参考)。 一、系统规模和功能 多用户商城系统的价格首先由其规模和功能决定。规模包括用…

Linux | 一篇文章带你深刻理解粘滞位

目录 前言 一、为什么需要粘滞位 二、粘滞位是什么&#xff1f; 三、怎么设置粘滞位 前言 关于粘滞位的学习&#xff0c;首先你得了解Linux下的权限&#xff0c;当然&#xff0c;文章会稍稍带着复习关键知识点&#xff0c;具体关于权限&#xff0c;请移步 Linux权限 一、为…

学习笔记-MongoDB(复制集,分片集集群搭建)

复制集群搭建 基本介绍 什么是复制集&#xff1f; 复制集是由一组拥有相同数据集的MongoDB实例做组成的集群。 复制集是一个集群&#xff0c;它是2台及2台以上的服务器组成&#xff0c;以及复制集成员包括Primary主节点&#xff0c;Secondary从节点和投票节点。 复制集提供了…

【C++】手撕STL系列——stack,queue篇

前言 前面实现了string和vector&#xff0c;理所应当就该轮到stack和queue啦&#xff0c;本篇还会涉及到一个比较重要且听起来很厉害的概念——适配器模式 适配器模式 在之前数据结构初阶的学习过程中&#xff0c;我们学习的栈是由数组加上一些限制组成的容器&#xff0c;底…

Jenkins 内存占用

查看内存占用 # ps aux | grep 9090 root 130854 0.0 0.0 8900 708 pts/1 S 16:23 0:00 grep --colorauto 9090 root 4010748 0.2 30.7 5826500 2502884 ? Ssl Oct13 8:55 /usr/bin/java -Djava.awt.headlesstrue -jar /usr/share/java/jenkins…

C++入门之引用与内联函数

一、引用 1、初步理解 引用在语法上的理解就是起别名&#xff0c;用法就是在类型后面加&&#xff0c;例子&#xff1a;int a 1; int& b a; 上例所示&#xff0c;执行后&#xff0c;b就是a的别名&#xff0c;它们代表同一块空间&#xff0c;a的改变会影响b&#xff0…

哇喔,用这个平台制作电子画册,太简单了!

经常在朋友圈里看到可以在线浏览、类似仿真书的电子画册&#xff0c;总觉得这种制作起来很难&#xff0c;后来无意间看到朋友在制作&#xff0c;今天终于知道怎么做了&#xff01; 原来只用一个平台 FLBOOK&#xff01;&#xff01;就能做出来这种效果&#xff0c;像我这种电脑…

在vscode中配置git bash终端、git 源码管理

打开vscode文件->首选项->设置&#xff0c;打开设置搜索shell windows将以下配置添加到vscode中的settings.json中 注意&#xff1a; terminal.integrated.profiles.windows这个配置项是就是添加终端的terminal.integrated.defaultProfile.windows这个是配置默认选项的…