用的usb的摄像头具体什么型号不清楚,有usb插头的就行,树莓派3B、4B、5都可以,使用motion或mjpg-streamer打开摄像头(这两个只是一个工具,会用就行,跟代码能力无关,我只展示motion的操作,效果的话应该是mjpg-streamer更好)
首先实现本地局域网访问摄像头
首先打开树莓派菜单开启摄像头
sudo raspi-config
查看摄像头是否成功启动
ls -al /dev/ | grep video
如果看到虚拟设备/dev下有video0就是成功了
安装motion
sudo apt-get install motion
配置motion daemmon守护进程
sudo nano /etc/default/motion
改为start_motion_daemon=yes ,nano为ctrl O保存,ctrl X退出
修改motion的配置文件:
sudo vim /etc/motion/motion.conf
daemon off改为daemon on motion 后台运行
strean_port 8081默认,可自行更改视频流监控
stream_localhost on改成off,允许通过非 localhost 来查看视频
rotate 旋转画面,如果需要90°、180°旋转,可以在这里配置。
width 和 height 修改画面分辨率(默认为 320*240 像素),这里可以修改,如 1024 和 768(当然如果你的分辨率太高画面会卡)
framerate 捕获的帧率,如修改为 30(太高或太低都会影响画面流畅度)
stream_maxrate 修改流的帧率,如果需要实时查看的话,建议修改这个的值,因为这个默认值是 1,会导致画面非常卡顿,如修改为 30。
启动服务
sudo service motion start
运行
sudo motion
这是同一个局域网下访问实时视频,ip:你自己设置的端口号
启动遇到报错就看https://raspberrypi.stackexchange.com/questions/78715/motion-daemon-var-log-motion-motion-log-permission-denied(应该是解决一个打开某文件的问题,没有的话自己mkdir一下就可以了)
关闭motion
sudo killall -w motion
使用 Ngrok 实现远程访问:
在树莓派上运行 Motion 服务:
前往 Ngrok 官网(https://ngrok.com/),注册并登录你的帐户,我用的是谷歌账号直接注册就行,其他注册方式大家可以自己试
下载适用于你版本的树莓派的 Ngrok 客户端传入树莓派解压即可,会生成一个可执行文件
提前运行motion,记住你的视频端口strean_port,这里我修改成了1314
进入ngrok控制台,复制Authtoken
./ngrok authtoken your_authtoken
然后启动ngrok,我这里启动的是1314端口,大家可以自己设置
./ngrok http 1314
运行成功之后ngrok创建一个隧道,可以使用URL访问motion服务
示例中我的公网地址是 https://a3ea-58-52-161-133.ngrok-free.app,下面是我使用手机流量查看实时监控(当然,免费的很卡~):