基于4G网卡和树莓派zero实现低延时数字图传(250-300ms左右)
方案本身并不復雜,都是采用成熟的產品,只需要幾個命令行就能解決問題
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地址可以直接訪問。
安裝很簡單,輸入命令行
安裝成功后,通過執行命令行,即可加入你自己的網絡
sudo zerotier-cli join 你的network IDnetwork ID可以通過你在ZeroTier的賬號自己查到,具體操作可以看其他文章,不再贅述,可以查看這個文章?ubuntu配置ZeroTier - 簡書?
在你的樹莓派和linux臺式機上都安裝好之后,使用ping相互試試IP是否能通。
這樣就建立好了連接,為后面的圖傳打下了基礎。
3、安裝測試你的樹莓派攝像頭
樹莓派連接好攝像頭,使用命令行可以測試一下是否有效。
將樹莓派的HDMI口連接到顯示器上,通過串口連接到樹莓派的命令行,輸入以下指令
如果顯示器上能顯示出攝像頭內容,表示連接正常了
如果不行,可能是你沒有配置好攝像頭
可以通過 sudo raspi-config 里面有相關選項,可以打開攝像頭
4、通過netcat來轉發攝像頭數據流(raw H.264)
攝像頭可以捕獲數據后,可以使用netcat或nc命令,將數據轉發到地面站(linux臺式機/筆記本/虛擬機)
在樹莓派上執行
-w -h 用來設置圖像寬度和高度
-t 0 表示一直開著攝像頭,不限時
-o 表示輸出
- 表示輸出到標準輸出
| 將標準輸出通過管道輸入到下一個指令
netcat是強大的網絡工具
-u表示使用udp
-l 表示監聽,后面的5000表示監聽的端口號
因此,通過這個命令實現了在5000端口號上監聽連接,一旦連接上了,就將攝像頭的raw h.264數據流通過UDP轉發出去
在linux電腦上,通過圖形界面打開命令行(否則無法查看視頻)
執行以下命令
-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秒左右馬賽克一次,但不影響畫面的實時性和流暢性。
總結
以上是生活随笔為你收集整理的基于4G网卡和树莓派zero实现低延时数字图传(250-300ms左右)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go标准库日志打印,以及同时输出到控制台
- 下一篇: [DS_PRATICE]列出连通集(c语