查看: 797|回复: 2

[教程] 树莓派/PC摄像头数据共享(方法三:搭建网络摄像头)

[复制链接]
最近发现一种新的数据传输方式,树莓派搭建网络摄像头,不仅速度流畅,效果感人,而且可以多个用户同时访问,爽歪歪~
给小伙伴们展示下PC端和手机端同时访问效果:
202006284447..png
202006281744..png
接下来给各位讲解下搭建树莓派网络摄像头的流程,主要有两种方式。
方法一、motion方式
第一步:安装motion包
[AppleScript] 纯文本查看 复制代码
sudo apt-get install motion

第二步:打开 motion daemon 守护进程,让它可以一直在后台运行
[AppleScript] 纯文本查看 复制代码
sudo nano /etc/default/motion
#no修改成yes:
start_motion_daemon=yes

第三步:修改motion的配置文件
[AppleScript] 纯文本查看 复制代码
sudo vim /etc/motion/motion.conf
#deamon off 改成 on
deamon on
#设置分辨率
width 800
height 600
#关闭 localhost 的限制
webcam_localhost off

第四步:运行 motion
[AppleScript] 纯文本查看 复制代码
sudo motion

安装好USB摄像头,运行后重启树莓派,现在我们的摄像头已经变成了一台网络摄像头,在chrome浏览器下访问 http://[your.domain]:8081 即可看到摄像头当前拍摄的画面,需要注意有时候重启树莓派后网络摄像头可能未启动,所以需要重新运行motion。
需要注意,第一种网络摄像头搭建方式不便于Android手机端的访问,所以这里我并未使用,这里仅做拓展讲解。
PC端使用Python访问非常简单,直接使用OpenCv模块的VideoCapture()方法,输入网络摄像头URL即可。使用伪代码如下:
[Python] 纯文本查看 复制代码
'''
VideoCapture()中参数是0,表示打开电脑内置摄像头,
参数是1或2打开外部摄像头
参数是视频文件路径则打开视频文件
参数是URL打开网络摄像头
'''
cap = cv2.VideoCapture(URL)

方法二、MJPG-streamer方式
第一步:安装所需模块
[AppleScript] 纯文本查看 复制代码
sudo apt-get updatesudo 
sudo apt-get install subversionsudo 
sudo apt-get install libjpeg8-devsudo 
sudo apt-get install imagemagicksudo 
sudo apt-get install libv4l-devsudo 
sudo apt-get install cmakesudo 
sudo apt-get install git

第二步:git一个开源的project:MJPG-streamer
[AppleScript] 纯文本查看 复制代码
sudo git clone github.com/jacksonliam/mjpg-streamer.git 
cd mjpg-streamer/mjpg-streamer-experimentalsudo 
make all
sudo make install

git过程比较缓慢,大家可以耐心等待一段时间,等待100%后确认完成后再执行下一条命令,启动USB摄像头,指令如下:
[AppleScript] 纯文本查看 复制代码
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"

202006287932..png
这里有一点需要注意,配置USB摄像头和树莓派专用摄像头指令不一样,这里我配置的是USB摄像头,具体指令分别如下:
指令启动普通USB摄像头指令:
[AppleScript] 纯文本查看 复制代码
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"  
启动树莓派专用摄像头RaspiCamera的指令:
[AppleScript] 纯文本查看 复制代码
./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"

并且使用树莓派专用摄像头需要开启专用摄像头配置的,输入指令如下:
[AppleScript] 纯文本查看 复制代码
sudo raspi-config

202006288222..png
点击摄像头使能开启即可。
以上就实现了全部的网络摄像头搭建。不过每次我们启动树莓派的时候还是需要手动去执行对应的命令,比较麻烦。那么接下来我们把当前项设置为一个系统自启动项。
第三步:设置自启动
cd到系统home目录下,新建一个sh可执行文件,输入如下命令即可:
[AppleScript] 纯文本查看 复制代码
sudo nano videoStart.sh

videoStart.sh文件中输入内容如下:
[AppleScript] 纯文本查看 复制代码
cd /home/pi/mjpg-streamer/mjpg-streamer-experimental/

./mjpg_streamer -i "./input_uvc.so" -d /dev/video0 -f 30 -r 1280x720 " -o 

"./output_http.so -p 8080 -w ./www"

然后退出保存,最后记得再给个可执行权限,输入命令:
[AppleScript] 纯文本查看 复制代码
sudo chmod +x /home/pi/videoStart.sh

接着再创建一个目录,输入命令如下:
[AppleScript] 纯文本查看 复制代码
sudo mkdir .config/autostart

继续新建一个文件,输入对应命令如下:
[AppleScript] 纯文本查看 复制代码
sudo nano .config/autostart/my.desktop

文件内容如下:
[AppleScript] 纯文本查看 复制代码
[Desktop Entry]

Type=shell

Exec=/home/pi/videoStart.sh

最后保存退出,这样每次开机就自动执行对应文件命令,省去了每次手动执行的麻烦。
第四步:测试
查看图像,在PC端打开浏览器,输入下面网址可以看到静态截图:
[AppleScript] 纯文本查看 复制代码
http://<树莓派IP>:8080/?action=snapshot 
202006281726..png
输入下面两条网址可以看到动态图像:
[AppleScript] 纯文本查看 复制代码
http://<树莓派IP>:8080/?action=stream 
这里的树莓派地址:http://192.168.0.112:8080/?action=stream
202006285133..png
动态图像的这个地址在有的浏览器不太好使,可以使用下面这个网址:
http://<树莓派IP>:8080/javascript_simple.html
总结:经过不断探索树莓派和PC视频数据通信“三部曲”到此结束,希望对小伙伴们有帮助~
那么局域网实现了实时视频直播,有人肯定会问互联网上如何观看?那这里我就给大家推荐一款可以穿透局域网的软件:花生壳,想必接触过互联网的朋友,应该都对此有一定得了解,配合上自家的路由器均可实现局域网电脑与互联网对接。

DFrJ5KYVQaH  中级技匠

发表于 2020-6-26 07:10:02

详细的教程,赞一个
回复

使用道具 举报

不脱发的程序猿  高级技师
 楼主|

发表于 2020-6-30 12:56:13

DFrJ5KYVQaH 发表于 2020-6-26 07:10
详细的教程,赞一个

三个帖子都有你,赞你一个~
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail