使用树莓派完成简易家用网络摄像头

huatechinfo
发布于 2021-1-11 15:02
浏览
0收藏

最近闲来无事,看到公司客户拿来的树莓派,又想起现在很火的各种智能硬件,突然想学习一下树莓派,利用树莓派做一个家用网络摄像头,解解闷。

 

首先,从网上了解一下,树莓派的配置,价格等,做好前期工作,接下来就是入手一块实体机(树莓派3B+),由于一些配件也必不可少,所以一起买了,比如电源线,外壳盒子,风扇,由于树莓派使用tf卡(microSD)作为存储设备,所以tf卡也很重要,索性家里有块不用的16G的tf卡,省了不少钱。最后是CSI接口的摄像头,如果买官方的要100多,但非官方的20多就能买到,作为初学者,够用了。

 

树莓派到手后,迫不及待的先安装,先是将散热贴贴上,然后将风扇和摄像头安装上,最后用购买的9层双色盒子将树莓派裹的严严实实,虽说严实,但该暴露的接口,一个也不少,所以不必担心以后加新的小配件时,需要将盒子完全拆开。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

硬件的初步连接完成后,接下来就是软件部分,首先是操作系统,树莓派的操作系统非常多,大多是基于linux的。为了安全起见,我选择从官网上下载最新系统映象,当然最好下载官方自己提供的映象,因为网上大多数教程都是针对官方系统,而第三方系统可能存在各种坑,对于初学者并不友好。

 

下载完系统后,就是将系统刷入tf(microSD)卡的时候了。我使用usb tool image,这是一款Windows带ui界面的映象刷入工具,非常直观和方便。相比传统工具win32diskimager更好用一些,比如支持压缩格式,支持中文目录名等。接下来的操作非常的简单,先将存储卡装上卡套,插入电脑,然后启动usb tool image(也可以先启动后插入),在界面左边选择u盘图标后,点击Restore按钮,选择下载的映象文件后,确定。然后就是刷入过程,接下来就是等待,具体时间视机器性能与tf卡存储速度而定。一般几分钟就能搞定了。PS:刷入完成后,有时会看到windows的格式化提示,因为tf卡刷入了系统映象,windows无法发现正常的文件系统,所以会提醒是否要格式化,这时忽略即可。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

系统终于刷完了,接下来的工作就是将tf卡插入树派莓,接上HDMI视频线,最后接上电源线,正式启动树莓派。如果一切OK的话,就能在显示器上看到树莓派系统的整个启动过程。由于是第一次启动,系统还无法连接任何网络,也没有任何的输入设备,这里建议将usb的鼠标与键盘接入(树莓派有4个usb口),以便第一次操作树莓派。关于树莓派的桌面,配置,菜单等使用网上可以搜索到很多,这里不细说了,大家可以都找到,而对于我来说,摆脱鼠标键盘HDMI线的束缚是最重要的,所以我的第一步操作就是连接上wifi,并且将wifi设置为启动时自动连接,在图形界面下很简单,在右上角的菜单栏里面选择wifi,输入密码就可以了。当然也可以使用命令行来操作,方法是编辑/etc/wpa_supplicant/wpa_supplicant.conf文件,如图即可。第二步就是打开ssh,使树莓派可以通过网络被远程操作,方法是运行sudo raspi-config,然后根据选项,打开ssh,然后通过另一台电脑连接树莓派。如图,终于大功造成了,可以摆脱鼠标键盘和HDMI线,做回一个安静的小板子了。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

好了,下面该摄像头登场了,树派莓的官方系统对摄像头的支持很到位,该有的软件都有提供,不需要用户额外再去开发,对于小白用户或初学者来说是件很nice的事情,当然作为后期有更复杂应用的老用户来说,还是不够的,索性官方系统还提供了python及摄像头操作的相关python开发包,也可以帮助用户解决更多高级问题。今天作为新手,我们只需要基本能用就行,下面来看看自带的工具如何使用摄像头,首先启动摄像头模块,sudo raspi-config 命令后,启动摄像头。如图

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

接下来,让我们试试通过摄像头来截图,首先是raspistill命令,运行 raspistill -v -o /tmp/a.jpg,这样就简单的用摄像头拍摄了一张图片,不相信可以将/tmp/a.jpg下载到自己的电脑上看一下。-v参数代表了详细过程的输出,-o代表了输出文件路径,看上去非常的简单,当然raspistill绝对不止这两个参数可用,我们可以使用raspistill —help命令了解更多复杂的功能,比如旋转图片参数—rotation等。

摄像头

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

成像照片(由于是倒置的,所以拍出来的是反的,效果还行)

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

说完摄像头截图,该说一下截视频命令raspivid命令了,运行raspivid -o /tmp/myvideo.h264 -t 10000 -w 1280 -h 720 将输出一段1280x720, 并且时长为10秒的视频,raspivid 的输出是一段未压缩的 H.264 视频流。

虽然用了raspivid命令后能够截视频了,但离我们的网络摄像头还有一定的差距,我们不能每次都使用命令生成视频后下载到本地观看,这样也太笨拙了,我们需要的是可以实现网络查看的摄像头,说到这里,需要使用上新的工具:vlc,这是一款媒体播放器,并且可以通过网络以流的方式播放视频,这样就可以将raspivid与vlc结合起来实现网络摄像头的功能了。首先是安装vlc,sudo apt-get update;sudo apt-get install vlc,然后将raspivid的输出通过linux管道输出给vlc,然后由vlc传输给客户端进行实时播放,命令如下:

raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264

从命令上大致可分析出,我们的输出流为640x360的视频,从标准输出中输出,并且从vlc的标准输入中传输给vlc程序处理,网络端口为8090,接就是网络另一端的客户端,vlc支持的平台很多,我们可以在windows, ios, 安卓上都下载到它并使用,以ios手机为例,我们下载了vlc后,打开网络串流,输入http://192.168.1.247:8090 (地址为树莓派分配到的ip地址),这样就能在手机端实时的看到网络摄像头的视频了。

手机app截图

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

说到这里,我们已经有一个最简单的网络摄像头了,虽然没有存储,没有报警,没有转向功能,但至少已经可以通过网络实时看家里的情况了。。。。。。mmmmmm,但好像还缺了点什么,虽然可以看,但当我离开了家,我就无法使用192.168.1.247这个内网的ip地址访问摄像头了,而且现在ipv4资源那么紧张,家里的网络多数没有公网IP,做端口映射的机会都没有,这时,我就需要一个可以穿透内网,访问摄像头的工具了,首先进入脑海的就是大名鼎鼎的花生壳了,这是oray公司的主打产品,可提供内网穿透功能,我们只需要将花生壳运行在树莓派上,并且将刚刚的8090端口映射到公网,就能在任何地方访问我的树莓派摄像头了。

但是花生壳内网穿透功能,是利用服务器中转,所以速度上受限,而且所有人都可以访问到它,安全性也稍差,最重要的是花生壳是tcp应用层上的转发,所以只能针对特定应用,如果我要访问ssh,必须再添加一个映射,每访问一个新的应用就要添加一个,而且只支持tcp协议。所以使用花生壳的念头打消,转而使用oray公司的另一个产品“蒲公英”,这是一款智能组网产品,也就是人们常说的虚拟局域网(VPN),相对于我的应用,蒲公英的优势在于更私密,更快速,更全面。

更私密:不像花生壳,蒲公英只有被管理员加入到虚拟局域网的设备才能互相访问,而不是任何人都可以访问。并且支持加密传输。

更快速:蒲公英支持p2p,也就是说如果p2p打通,完全可以走用户自己的网络,而不受中转服务器的限制。

更全面:由于是虚拟局域网,所以就像局域网一样,几乎支持所有ip层以上的协议,不必像花生壳一样为每一个应用开一个映射。

蒲公英的产品众多,从软件支持windows,ios,Mac,安卓,linux开始,到硬件支持路由器,nas,第三方嵌入等,有众多的平台可供选择,而我选择了蒲公英路由器硬件,和众多的软件平台,为什么要选路由器呢,首先是家里的路由器太老了,正好想更换,另一方面我选择的蒲公英x5系列路由器是千兆网口,符合现在需求越来越高的网络环境,而且带usb口,可外接存储设备,以及2.4g/5gWifi,支持局域网开机,最最重要的是蒲公英路由器内还集成了花生壳功能,真是一举两得。

蒲公英路由器到手后,开始做一些初始工作,如配置wifi,局域网ip,管理员密码等。由于它是一款智能路由器,所以内部可用的功能很多,如行为管理,全端口,远程开机,花生壳,QoS,文件存储等,虽然没有一些专业路由器功能多,但对于我来说够用了,必尽人家蒲公英是以智能组网为卖点的产品。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

初步工作完成后,下面就组网工作了,首先登录https://pgybox.oray.com,输入自己的oray帐号和密码,然后在蒲公英智能组网菜单,选择创建网络,网络类型选择对等网络即可。

默认情况下,免费版用户支持拥有5个成员组网,其中3台路由器,和两个客户端,对于我来说,已经够用了。由于之前在初始化我的路由器时,已经绑定了我的oray帐号,所以在可选成员列表中可以看到自己的蒲公英路由器,另外就是两个可用的客户端成员,不管怎么样,先将它们统一选入我的组,然后点击创建,完成。这时,我的路由器已经进入了组网状态了。然后我先在手机上下载蒲公英,同样使用自己的oray帐号登录,这时,你会发现组内就是我刚刚选入的组成员,包括我的路由器,试着在手机上使用网络工具ping一下我的路由器lan口ip,发现马上通了,如果不信,可以将手机上的蒲公英软件关闭,再ping一次(注意不要将手机连接在蒲公路由器的wifi下,这样测试毫无意义)。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

测试成功后,该我的树莓派登场了,首先将树莓派连接上蒲公英的wifi,然后再尝试去ping,这时ping的将是树莓派的ip地址(10.168.1.247),你会发现同样能通,这时我们用手机自带的vlc,打开之前http://10.168.1.247:8090 ,同样也看到了树莓派的摄像头画面,这时就代表了我可以在任何地方查看家里的树莓派了摄像头。

由于我平时在公司的时间非常多,所以在公司的windows上安装一个蒲公英客户端很有用,一方面不用使用手机的流量,一方面也能获取更好的体验,必尽电脑的性能远远强于手机。于是下载了windows客户端,同样的方式,登录。发现windows版可以显示每个成员的连接方式,很明显我的公司电脑和家里的蒲公英使用了p2p连接,同时还能显示路由器下面接的子设备(包括我的树莓派)。这时再打开电脑上的vlc,查看摄像头,画面明显更流畅一些。大功告成。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

终于完成了网络摄像头的基本功能,下面将是进一步的针对自己的情况进行优化,由于树莓派目前只是学习使用,不在家的时候一直开着也很麻烦,不仅浪费电,还有风扇噪音,但需要时,又希望能够马上打开,于是琢磨着买一个智能插座,说到智能插座,市面上太多了,这里我选择仍然是oray公司的向日葵智能插座,这款插座与一般的插座不一样的地方在于它除了定时和不定时启动关闭电源外,还支持网络wol开机,这样,通电和开机,能一体化搞定,于是拍下了这个宝贝。由于这个插座是向日葵产品,所以先要在手机上下载一个向日葵app,然后登录自己的oray帐号,选择设备,点击右上角的+号,选择添加智能硬件,并添加插座,按照提示顺利添加插座后,就可以通过手机随时控制家里的插座了。这时我的树莓派再次登场,将电源插在智能插座上,完美。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

这样,一套可供我在公司随时学习树莓派,又能查看网络摄像头的完美方案做好了,每当我在公司希望查看树莓派时,首先在手机上操作向日葵插座让树莓派通电,然后在电脑上打开蒲公英,再打开vlc,就能查看到摄像头画面了,另外还可以通过putty这样的ssh工具进后树莓派后台了。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

回想一下,这个方案仍然有一些不确定因素和不完美的地方,比如公司与家里的通讯速度,如果不能p2p,看视频不能很流畅,当然,这需要在树莓派上对网络视频输出有更好的压缩,所幸公司到家里的速度可以达到的70-80Mbits/s,在p2p模式还是很给力的。在公司看家里的nas电影都绰绰有余。

使用树莓派完成简易家用网络摄像头-鸿蒙开发者社区

收藏
回复
举报
回复
    相关推荐