写点什么

树莓派 /PC 实现实时摄像头数据共享—最优方法(搭建网络摄像头)

发布于: 2021 年 07 月 07 日
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)

之前做项目需要树莓派和 PC 进行视频传输,发现两种方法:

方法一:Python+OpenCv 实现树莓派数据采集,树莓派搭建服务器,PC 机作为客户端实现数据传输,结果发现传输画质太差。

网址:https://blog.csdn.net/m0_38106923/article/details/81974373

方法二:使用 Python+树莓派原装摄像头,使用 Python 代码调用,再搭建服务器,传输视频,效果显著。

网址:https://blog.csdn.net/m0_38106923/article/details/82628061

最近发现一种新的数据传输方式,树莓派搭建网络摄像头,不仅速度流畅,效果感人,而且可以多个用户同时访问,爽歪歪~

给小伙伴们展示下 PC 端和手机端同时访问效果:


接下来给各位讲解下搭建树莓派网络摄像头的流程,主要有两种方式。

  • 方法一、motion 方式

第一步:安装 motion 包

 sudo apt-get install motion
复制代码

第二步:打开 motion daemon 守护进程,让它可以一直在后台运行

sudo nano /etc/default/motion#no修改成yes:start_motion_daemon=yes
复制代码

第三步:修改 motion 的配置文件

sudo vim /etc/motion/motion.conf#deamon off 改成 ondeamon on#设置分辨率width 800height 600#关闭 localhost 的限制webcam_localhost off
复制代码

第四步:运行 motion

sudo motion
复制代码

安装好 USB 摄像头,运行后重启树莓派,现在我们的摄像头已经变成了一台网络摄像头,在 chrome 浏览器下访问 http://[your.domain]:8081 即可看到摄像头当前拍摄的画面,需要注意有时候重启树莓派后网络摄像头可能未启动,所以需要重新运行 motion。

需要注意,第一种网络摄像头搭建方式不便于 Android 手机端的访问,所以这里我并未使用,这里仅做拓展讲解。

PC 端使用 Python 访问非常简单,直接使用 OpenCv 模块的 VideoCapture()方法,输入网络摄像头 URL 即可。使用伪代码如下:

'''VideoCapture()中参数是0,表示打开电脑内置摄像头,参数是1或2打开外部摄像头参数是视频文件路径则打开视频文件参数是URL打开网络摄像头'''cap = cv2.VideoCapture(URL)
复制代码
  • 方法二、MJPG-streamer 方式

第一步:安装所需模块

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

sudo git clone github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimentalsudo make allsudo make install
复制代码

git 过程比较缓慢,大家可以耐心等待一段时间,等待 100%后确认完成后再执行下一条命令,启动 USB 摄像头,指令如下:

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
复制代码


这里有一点需要注意,配置 USB 摄像头和树莓派专用摄像头指令不一样,这里我配置的是 USB 摄像头,具体指令分别如下:

指令启动普通USB摄像头指令:./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"  启动树莓派专用摄像头RaspiCamera的指令:./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
复制代码

并且使用树莓派专用摄像头需要开启专用摄像头配置的,输入指令如下:

 sudo raspi-config
复制代码


点击摄像头使能开启即可。

以上就实现了全部的网络摄像头搭建。不过每次我们启动树莓派的时候还是需要手动去执行对应的命令,比较麻烦。那么接下来我们把当前项设置为一个系统自启动项。

第三步:设置自启动

cd 到系统 home 目录下,新建一个 sh 可执行文件,输入如下命令即可:

sudo nano videoStart.sh
复制代码

videoStart.sh 文件中输入内容如下:

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"
复制代码

然后退出保存,最后记得再给个可执行权限,输入命令:

 sudo chmod +x /home/pi/videoStart.sh
复制代码

接着再创建一个目录,输入命令如下:

 sudo mkdir .config/autostart
复制代码

继续新建一个文件,输入对应命令如下:

 sudo nano .config/autostart/my.desktop
复制代码

文件内容如下:

 [Desktop Entry]  Type=shell  Exec=/home/pi/videoStart.sh
复制代码

最后保存退出,这样每次开机就自动执行对应文件命令,省去了每次手动执行的麻烦。

第四步:测试

查看图像,在 PC 端打开浏览器,输入下面网址可以看到静态截图:

http://<树莓派 IP>:8080/?action=snapshot

我这里是地址:http://192.168.0.112:8080/?action=snapshot

输入下面两条网址可以看到动态图像:

http://<树莓派 IP>:8080/?action=stream

这里的树莓派地址:http://192.168.0.112:8080/?action=stream

动态图像的这个地址在有的浏览器不太好使,可以使用下面这个网址:

http://<树莓派 IP>:8080/javascript_simple.html

总结:经过不断探索树莓派和 PC 视频数据通信“三部曲”到此结束,希望对小伙伴们有帮助~

那么局域网实现了实时视频直播,有人肯定会问互联网上如何观看?那这里我就给大家推荐一款可以穿透局域网的软件:花生壳,想必接触过互联网的朋友,应该都对此有一定得了解,配合上自家的路由器均可实现局域网电脑与互联网对接。

发布于: 2021 年 07 月 07 日阅读数: 6
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程

评论

发布
暂无评论
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)