树莓派5-学习笔记4:摄像模块安装、调试与网络摄像头的测试(imx219非原厂)

系列文章目录

树莓派5-学习笔记1:系统的烧录与安装
树莓派5-学习笔记2:配置VNC远程桌面
树莓派5-学习笔记3:系统更新与备份
树莓派5-学习笔记4:摄像模块安装、调试与网络摄像头的测试(imx219非原厂)
树莓派5-学习笔记5:树莓派+群辉NAS搭建个人监控中心



前言

这篇文章来来回回写了得有好几天,主要是在摄像头推流调试的时候遇到了奇怪的问题,搞了好久。现在算是搞定了,赶快发出来,这次干货不少,应该会对一些人有用吧。


1. imx219摄像模块安装

价格网上几十块钱随便就能买到,很便宜。原装的会上百,个人感觉没必要,能省则省,主要是为了学习练手的话,随便淘一个就行了。
1)imx219摄像模块外观
模块采用一根柔性扁平电缆(FFC) 连接摄像头模块和树莓派主板(注意尽量不要对折,坏了也不怕,网上包邮几块钱一个,就是耽误时间),摄像头连接22针脚的(大头),树莓派连接15针脚(小头)。
在这里插入图片描述
2)树莓派5的DISP接口位置
树莓派5的有两个DISP接口,分别是1和0,位置如下图所示,就在网口左边。
在这里插入图片描述
3)imx219摄像模块的安装
首先需要断电操作!!
然后DISP接口黑色挡板是可以向上撬开的,稍微用镊子或者指甲撬一下就行了。
将FFC小的那端插进去,注意线缆黑色面和接口的黑色挡板是在一面的,然后要送到底,轻压挡板,卡主线缆就行了。

imx219安装视频:

树莓派5 imx219摄像头安装

装完后检查一下是否平整。
在这里插入图片描述
摄像头安装完成后,就可以重新上电进行调试了。

2. 调试摄像头。

1)使用libcamera-hello 或 rpicam-hello 调试
rpicam本身就是libcamera的换了个名字,树莓派Bookworm版本开始使用rpicam替代libcamera了。
在这里插入图片描述
命令行输入libcamera-hello,看一下有没有反应。

libcamera-hello

果然!发现返回错误,提示没有找到摄像头

在这里插入图片描述

2)修改/boot/firmware/config.txt 文件

 sudo nano /boot/firmware/config.txt

在最后[all]的下面回车加入

  [all]
  dtoverlay=imx219,cam0

imx219指的是芯片型号,cam0对应的就是刚才安装摄像头的那个接口位置,板子上也印上了CAM/DISP 0。
而dtoverlay是Device Tree overlay的意思,是设备树覆盖层。设备树是描述硬件配置的数据结构,在Linux内核启动过程中被加载,用于初始化硬件设备。
在[all]下添加这个命令,就是任何时候,在cam0接口初始化imx219这个摄像头。

修改后文件如下图所示:
在这里插入图片描述

有的指导材料里介绍需要将 camera_auto_detect=1 需要改成camera_auto_detect=0,关闭自动检测摄像头。但是来回试了好几次,发现这个值即便不修改也不影响。
只要配置了dtoverlay基本上就行了,目前暂时保持这个配置,后面如果出现问题,到时候在看看。
记得Ctrl+O保存,Ctrl+X退出。

3)重启设备后,再试下 libcamera-hello

libcamera-hello

现在可以看到,返回的内容不一样了。但由于现在用的是命令行,我们看不到具体的画面。
在这里插入图片描述
4)使用VNC登录,再次尝试
VNC远程登录树莓派,然后打开一个Terminal终端,再次输入libcamera-hello 或者rpicam-hello 命令。
在这里插入图片描述
这次我们可以看到摄像头拍摄的画面了。
在这里插入图片描述好现在可以看到视频画面了,算是初步调试成功。可以进入下一步了,做个简单的网络摄像头了。

3. 远程监控能力的调试(实现网络摄像头功能)

1)PC上安装VLC软件
首先我们可以下载一个免费的VLC客户端,直接从官网上下就行,官网连接:https://www.videolan.org/
在这里插入图片描述

下载后,直接下一步安装即可。
在这里插入图片描述

这两个建议勾掉,反正VLC我一般都是用来做内网测试的,以前经常用这个测组播服务。
在这里插入图片描述
这样VLC的客户端就准备好了。(我这里是直接开了ubuntu的虚机并做了网卡桥接。就不需要用这个宿主机测试了,不然老得改防火墙配置很麻烦)
在这里插入图片描述
2)树莓派上开始推流(使用picam-vid命令)
在树莓派上执行rpicam-vid -n -t 0 –libav-format mpegts --codec h264 -o "udp://<接收端IP地址>:<监听端口号> " 。
具体命令如下:

rpicam-vid -n -t 0 --libav-format mpegts --codec h264 -o "udp://192.168.31.27:8858"
-n ,(--nopreview)禁用预览窗口,可有效节省系统资源。
-t 0 ,(--timeout 0)表示持续推流。
--libav-format mpegts ,指定使用libav封装格式。(关键,如果不加上的话,默认就是H264的裸流)
 --codec h264, 视频编码采用h264
-o,(--output)表示输出的形式,后面可以是文件、也可以是udp、tcp这种网络协议。
 -o "udp://<接收端IP地址>:<监听端口号> ", udp://192.168.31.27:8858,就是输出成一个udp流,192.168.31.27是目标接收端的ip地址,8858是目标的监听端口,也是这个udp流的目的端口。
 如果是:
-o "/home/ixidor/test.mp4",就是输出成一个test.mp4的文件。

在这里插入图片描述
3)(监听端)VLC客户端拉流
点击“媒体”–>“打开网络串流”。
在这里插入图片描述
在对话栏中输入“upd://@:8858”,点击“播放”按钮。这个8858就是刚才设置的udp直播流的监控端口。

在这里插入图片描述
这样就成功了,画面推过来了。不过图像是倒着的。
在这里插入图片描述
这个可以直接在VLC客户端上调整,点击“工具”–>“效果及滤镜”。
在这里插入图片描述
按顺序操作:“视频效果”–>“几何”–>勾选“旋转”–>调整“角度”至180°。保存即可。
在这里插入图片描述
这里放一下监控效果。

树莓派5-imx219网络监控器-测试视频

4)摄像头直播组播流测试
树莓派上使用picam-vid命令,推送组播流。

rpicam-vid -n -t 0 --libav-format mpegts --codec h264 -o "udp://224.0.0.10:8858"

这里更换成了一个组播地址。

同步在局域网内换一台电脑,用VLC客户端监听这个组播流看一下,这里输入:udp://@224.0.0.10:8858。
在这里插入图片描述
验证一下,组播推流成功。
在这里插入图片描述
5)TCP拉取直播流测试
树莓派上使用picam-vid命令,监听tcp端口。
在树莓派上执行rpicam-vid -n -t 0 --libav-format mpegts --codec h264 --listen -o "udp://0.0.0.0:<监听端口号> " 。

rpicam-vid -n -t 0 --libav-format mpegts --codec h264 --listen -o "tcp://0.0.0.0:8858"
--listen, 表示监听一个网络连接
tcp://0.0.0.0:8858,表示从任意地址发来的TCP:8858

在这里插入图片描述
同步在局域网内换一台电脑,用VLC客户端向树莓派发出TCP请求,这里输入:tcp://@192.168.31.236:8858。
在这里插入图片描述

验证一下,客户端与树莓派上建立TCP链接,获取直播流量成功。
在这里插入图片描述
注意:这个建立的方式是一次性的,VLC客户端关闭的话,服务端也会跟着关闭。

在这里插入图片描述

4. 摄像头调试遇坑总结

怎么说呢,反正真的没想到调个这玩意能遇到这么多问题,最红总结发现全都集中在了 --libav-format mpegts 这个上了参数上了。

rpicam-vid -n -t 0 --libav-format mpegts --codec h264 -o "udp://224.0.0.10:8858"

如果不使用MPEG-TS封装的话,就会有问题,像这样,删掉 --libav-format mpegts,直接使用h264裸流。

rpicam-vid -n -t 0  --codec h264 -o "udp://224.0.0.10:8858"

在VLC客户端上同样拉流的话,就会看到视频流永远卡在了第一帧画面。加上 --libav-format mpegts 就好了,不知道是不是跟VLC客户端有关系。也可能是因为mpeg-ts封装提供了CRC校验和重传能力。回头有时间在研究要下了,这个到现在也没搞清楚是为什么?
在这里插入图片描述


总结

就一句话,记得–libav-format mpegts。用rpicam-vid命令推流的话,一定要用mpegts封装。希望对别人有用吧。

### 树莓派5摄像头的相关信息 #### 硬件兼容性 树莓派5支持多种类型的摄像头模块,包括官方推出的Raspberry Pi Camera Module系列以及其他第三方USB摄像头设备。对于官方摄像头模块而言,其硬件接口基于CSI(Camera Serial Interface),而大多数第三方摄像头则通过USB连接至树莓派[^1]。 #### 驆动安装 针对官方摄像头模块树莓派的驱动主要依赖于V4L2(Video4Linux2)和libcamera生态。具体步骤如下: - 更新RPi固件并启用摄像头功能:运行`sudo apt-get update && sudo apt-get upgrade`以确保系统处于最新状态;随后利用`raspi-config`工具,在菜单中选择“Interfacing Options -> Camera”,将其开启,并重启设备[^2]。 - 对于USB摄像头,通常无需额外配置即可被识别为视频捕获设备,但仍需确认内核已加载相应的UVC(USB Video Class)驱动程序[^3]。 #### 使用方法 一旦完成了上述准备工作,则可以借助预装的应用或者编写脚本来操控摄像头采集静态图片或动态影像文件。例如,调用命令行实用程序`raspistill`用于拍摄照片,而`raspivid`负责录制短视频片段。如果希望进一步扩展应用范围比如实时流媒体传输,那么可以通过组合FFmpegNetcat(`nc`)达成目的——前者负责编码处理素材源码流转化成适合网络传播的形式后者构建起简易服务器以便客户端访问接收数据包[^4]。 ```bash # 启动摄像头服务 sudo modprobe bcm2835_v4l2 # 测试拍照功能 raspistill -o test.jpg # 开始录像并将输出重定向给netcat监听指定端口等待远程连接请求到来之后发送过去 raspivid -t 0 -h 720 -w 1080 -fps 25 -b 2000000 -o - | nc -lkv 8089 ``` 以上代码展示了如何激活BCM芯片上的虚拟摄像机节点供后续操作使用、执行基本抓拍动作保存成果到本地磁盘以及搭建简单的RTSP推送机制向局域网内的其他主机分享现场画面情景模拟过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值