还原彩六小车 用树莓派3B+实现pistreaming

经过十几天的摸索与不断尝试,终于是完成了小车摄像头视频低延时的视频直播流的搭建

树莓派:树莓派3B+(美行)和国行没有太大区别怕有不同提一句

摄像头:RPi_NoIR_Camera_V2(树莓派4代B型 官方Raspberry pi摄像头 红外夜视 800万像素)

用到的OS

进系统一顿 镜像服务器配置(用了科大的源,觉得说明界面好看非常喜欢)和常用软件安装(拼音输入法什么的)

使能树莓派的Camera重启树莓派

需要提前安装 git 和 pip

注意:这里的pip应该是作为python3的安装工具

按照 waveform80的pistreaming 进行安装,然后

$ python3 server.py

人就傻了说我ws4py找不到,所以还要自己再装一下

$ sudo pip install ws4py

看一下是不是能够运行server.py文件了,如果还不行…你可以通过以下命令来判断是否已安装pip:

$ pip --version

如果你发现你的pip是装给了python2.7则可以使用以下方法来安装:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
$ sudo python3 get-pip.py    # 运行安装脚本。

一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。

再运行一遍

$ sudo pip install ws4py

再次运行server.py如果看到

Initializing websockets server on port 8084
Initializing HTTP server on port 8082
Initializing camera
Initializing broadcast thread
Spawning background conversion process
Starting websockets thread
Starting HTTP server thread
Starting broadcast thread

就行了,新开一个终端用ip address看看树莓派的IP地址是什么,和树莓派连上同一个wifi,用浏览器输入

http://这里写树莓派的ip地址:8082/

理论上打开工程里面的index.html文件你就可以看到视频流了

手机浏览器查看

图形有点发紫,不知道是供电还是什么,还是什么红外视野的问题,到时候要处理一下

心酸的摸索过程

对树莓派系统的摸索

我在树莓派3B+上尝试了 ubuntu mate 16.04、18.04 和 Raspbian这三种系统进行尝试,我来一个个说一下

ubuntu mate 18.04:一开始尝试的系统,对3B+适配性较好。就是打开firefox的时候会变卡,系统本身运行感觉有点慢,感觉是针对桌面级CPU进行设计然后在剪裁给树莓派用的。主要是大部分软件对18.04的可以软件较少,资料少没有可用的镜像源果断放弃。

ubuntu mate 16.04:对3B适配性非常好,但是如果用3B+启动需要修改Boots文件进行引导。在使能树莓派上的摄像头串口后显示电压电路不足(就是彩屏和黄色闪电图标),心想着5V3A你都不满意,就是系统适配的问题了,哪怕不是让小车拖着一个15W以上的电池跑心里也不爽。所以还是放弃了这个系统

Raspbian:没办法还是原生官方得我心,用这一系统完成了搭建。

对直播和串流方式的摸索

一开始参照的是shaqian的PiBot 17年完成的工程,使用了 HTTP Live Streaming (HLS) 这个技术为底层搭建的视频直播流

HLS效果图
  • 优点:高清,不花屏
  • 缺点:延迟5S左右

显然不适合我们需要实时移动的小车,所以我果断换了一种方式

后来尝试了用 VLC 显示 树莓派摄像头 H264 裸流 这一方案,问题是他会占用桌面画面,也不太好用VLC来接收传输的udp包(我太菜了一直没有接收的视频信号),果断放弃

最后用了标题提到的waveform80的pistreaming 这一个工程,这符合我们的要求首先他只是调用了很多可以被下载到的库文件,有简单易懂的原码、不错时延、对接收端几乎没有要求和较高执行效率,真是近乎完美。只是环境配置折腾了几天搞得我经常瞟几眼其他方案,近乎放弃这一方案。还好最后还是成功了…