基于4G网卡和树莓派zero实现低延时数字图传(250-300ms左右)

  • Post author:
  • Post category:其他


方案本身并不复杂,都是采用成熟的产品,只需要几个命令行就能解决问题

0、准备工作


硬件:


树莓派zero

4G网卡

linux台式机/笔记本/虚拟机


软件:


raspivid

netcat / nc

mplayer

ZeroTier


1、树莓派+4G网卡实现连接互联网

首先:树莓派通过4G网卡先要连接互联网,这一步详见我之前写的一篇文章


树莓派zero使用合宙Air724UG作为USB上网卡_梦想家的专栏-CSDN博客


2、构建虚拟局域网实现树莓派和台式机IP互通

由于4G网卡获取的IP和你的电脑肯定不是一个局域网网络,相互之间是无法直接通过IP地址访问的,因此需要构建一个虚拟的局域网实现互联。

ZeroTier是一个很好的网站,可以非常简单的构建免费的虚拟局域网

注册一个账号即可使用,支持linux,windows,android等各类平台,非常好用。

在树莓派和linux电脑上,通过安装ZeroTier客户端,能够虚拟出一个网卡,分配的IP地址可以直接访问。

安装很简单,输入命令行

curl -s https://install.zerotier.com | sudo bash

安装成功后,通过执行命令行,即可加入你自己的网络

sudo zerotier-cli join 你的network ID

network ID可以通过你在ZeroTier的账号自己查到,具体操作可以看其他文章,不再赘述,可以查看这个文章

ubuntu配置ZeroTier – 简书

在你的树莓派和linux台式机上都安装好之后,使用ping相互试试IP是否能通。

这样就建立好了连接,为后面的图传打下了基础。


3、安装测试你的树莓派摄像头

树莓派连接好摄像头,使用命令行可以测试一下是否有效。

将树莓派的HDMI口连接到显示器上,通过串口连接到树莓派的命令行,输入以下指令

raspivid -t 0 -w 640 -h 360

如果显示器上能显示出摄像头内容,表示连接正常了

如果不行,可能是你没有配置好摄像头

可以通过 sudo raspi-config 里面有相关选项,可以打开摄像头

4、通过netcat来转发摄像头数据流(raw H.264)

摄像头可以捕获数据后,可以使用netcat或nc命令,将数据转发到地面站(linux台式机/笔记本/虚拟机)

在树莓派上执行

raspivid -t 0 -w 640 -h 360 -o - | netcat -ul 5000

-w -h 用来设置图像宽度和高度

-t 0 表示一直开着摄像头,不限时

-o 表示输出

– 表示输出到标准输出

| 将标准输出通过管道输入到下一个指令

netcat是强大的网络工具

-u表示使用udp

-l 表示监听,后面的5000表示监听的端口号

因此,通过这个命令实现了在5000端口号上监听连接,一旦连接上了,就将摄像头的raw h.264数据流通过UDP转发出去

在linux电脑上,通过图形界面打开命令行(否则无法查看视频)

执行以下命令

netcat -vu 10.243.155.167 5000 | mplayer -fps 60 -cache 2048 -

-v表示显示详情

-u表示udp

后面的IP地址和端口号是树莓派的地址和端口,其中IP地址是刚才在第二节说的虚拟IP

使用mplayer进行播放 指定fps为60

一定要设置缓存,否则播放有问题

mplayer可以通过   sudo apt install mplayer   直接安装

当然,你也可以使用TCP来转发视频流,但是由于TCP在网络稳定的时候,会进行重传,可能导致视频延迟,因此为了确保实时性,建议还是使用UDP协议,虽然可能中间丢包,但是不会造成较大的延迟。

5、测试结果

延迟:



延迟大概在250-300ms左右


,应该来讲是比较低了,可以接受

流量:

在640*360分辨率下,流量通过iftop查看,

如果画面是在激烈的晃动和变化下,树莓派网卡


峰值流量250kB/s



一般情况下流量消耗在


100kB/s ~200kB/s之间徘徊



以最大消耗250kB/s计算,


1分钟最大流量15MB,10分钟150MB,20分钟300MB,1小时900MB



流量消耗可以接受。

丢包率测试:

通过虚拟机,设置


丢包率在0.1%时


,大概


5秒左右马赛克一次


,但


不影响画面的实时性和流畅性




版权声明:本文为hoopertsau原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。