如何利用image transport进行视频压缩传输
问题
在ros中,如果通过原生的ros通信格式进行数据传输的话, 图像再经过网络之后就会非常的卡顿,这时候, 我们就可以利用ros中的image_transport库进行图像传输, 通过该库中的插件,我们可以对JPEG/PNG的图像进行压缩,以及压缩成theora视频流, 可以极大节省网络带宽,提高视频流畅度。
安装
在ros环境中,通过以下命令进行安装。
sudo apt get install image_transport
sudo apt get install image_transport_plugins # 该组件必须安装以便进行压缩传输。
当然也可以通过源码进行编译安装, 如下链接:https://github.com/ros-perception/image_common
代码编写
该封装库的使用十分简单,需要封装 sensor::Image
格式的数据, 然后,通过image_transport组件进行发送即可。
// Use the image_transport classes instead.
#include <ros/ros.h>
#include <image_transport/image_transport.h>
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{// 回调函数
}
ros::NodeHandle nh;
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("input_image_base_topic", 1, imageCallback);
image_transport::Publisher pub = it.advertise("output_image_base_topic", 1);
发布成功之后, 该节点会生成 /raw 话题数据, 以及/raw/compressed图像, /raw/theora_image图像, 分别是原生的ros数据, 以及压缩之后的图像和压缩成功的视频流, 笔者传输的是 1280*720的图像,带宽使用对比如下:
参数 | ROS | 图像压缩 | 视频压缩 |
---|---|---|---|
wifi的带宽 | 90Mb/s | 10Mb/s | 400Kb/s |
通过wifi传输延迟 | 6秒 | 2秒 | 500ms |
测试
通过以下命令可以动态修改参数, 并进行在线调试传输质量和带宽。
rosrun rqt_reconfigure rqt_reconfigure
如何利用image transport进行视频压缩传输相关推荐
- 利用IP组播技术传输视频信息
利用IP组播技术传输视频信息 随着全球互联网(Internet)的迅猛发展,上网人数正以几何级数快速增长,以因特网技术为主导的数据通信在通信业务总量中的比列迅速上升,因特网业务已成为多媒体通信业中 ...
- C#利用WCF改进文件流传输的三种方式
摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...
- Java利用TCP进行文件的传输
采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分. 两个文件的IP,端口都在程序中指定 传输的文件路径 ...
- An Intuitive Guide to Optimal Transport|最优传输理论
An Intuitive Guide to Optimal Transport|最优传输理论 最优传输:最优传输问题最早是由法国数学家蒙日于1780年代提出:其解的存在性被俄国数学家Kantorovi ...
- java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Java 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...
- 利用sshpass避免scp命令传输文件多次输入密码
利用sshpass避免scp命令传输文件多次输入密码 1.scp基本用法: scp是基于ssh的 将本地文件上传或发送到服务器的命令. scp localpath username@ip:server ...
- 利用VC++实现局域网实时传输
本文针对不同的局域网,提出一种通用的实时视频传输的解决方案.在使用Divx编解码的基础上,提出了从压缩.组帧.发送到接收.解压整个流程的思想,具体实施方案和VC++实现核心源代码以及传输控制策略,有效 ...
- linux使用shell脚本利用expect工具实现SCP传输文件到多台服务器
1.安装expect yum install expect 2.设置服务器地址,用户名,密码,源路径,目标路径 新建文件host.txt添加如下内容 192.168.0.135 root 密码 源路径 ...
- JMF 利用RTPManager进行视频音频流传输聊天
转:http://blog.csdn.net/maydie1989/article/details/6820482 http://download.csdn.net/detail/maydie1989 ...
最新文章
- 赛门铁克开启“容灾即服务”时代
- Tensorflow |(4)名称域、图 和会话
- 网站推广下吉利关联公司公开“车辆故障预测方法”将在事故发生前预警
- sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?
- 本机的计算机管理员,c# 获得本机计算机名字,获得本机当前系统登陆用户和管理员权限,Environment...
- ubuntu12.04平台下a80编译环境搭建
- 交通警察手势信号(动画演示)
- centos samba 看不到共享目录_samba共享服务
- 具有多个Join和选定列的示例LINQ
- 某公司机房成功搭建openssh server跳板服务器
- 手机5g什么时候普及_5G手机什么时间普及,现在买4G手机划算吗?
- sas 服务器版安装文件,安装SAS怎样配置服务器
- activex控件 java_ActiveX控件不自动安装
- “爱玛”等不达标电动自行车下架
- 火灾报警管理系统java,火灾报警系统开题报告
- 紫书——Repeating Decimals UVA - 202
- 9宫格实现微信朋友圈图片点击放大缩小弹簧效果
- 元分析 | 大脑同伦共激活的性别差异
- CREO:CREO软件之零件【渲染】之对三维零件实现渲染图文教程之详细攻略
- 2021-04 提高转化-基础销量+基础销量+晒图买家秀+精心设计的问大家