libcamera_ipc 开源代码之树莓派3B+ Bookworm部署
1. 源由
树莓派早期的嵌入式板子,随着硬件技术,软件的升级换代,越来越不能满足AI方面的需求。
但是,作为IPC硬件以及智能控制领域来说,还是错错有余的。为此,我们这里将利用树莓派3B+做一个IPC摄像头使用。
2. 分析
通常来说,IPC网络摄像头的几个关键指标要求:
- FPS 帧率,通常15FPS
- 视频实时性,通常1s以内延迟
- 分辨率,通常1080P 或者更高
- 比特率,不要出现马赛克
- 安装部署方便,无线
3. 部署
系统安装,详见:Raspbian镜像无头烧录
开发环境,详见:Raspberry Pi3B+之C/C++开发环境搭建
注:基础方面的安装,不在重点一步一步整理出来,相关内容大家请自寻方法,如果实在有问题,在评论中回复。
3.1 下载
$ git clone git@github.com:SnapDragonfly/libcamera_ipc.git
or
$ git clone https://github.com/SnapDragonfly/libcamera_ipc.git
3.2 启动
/etc/rc.local
仍然可以用于在 Raspberry Pi 启动时运行脚本。
所以,最简单的方法就是,直接添加启动脚本:
$ cd libcamera_ipc
$ pwd
/home/daniel/libcamera_ipc
$ sudo nano /etc/rc.local
$ cat /etc/rc.local
#!/bin/bash
/home/daniel/libcamera_ipc/rtp2rtsp_server.sh start &
3.3 配置
目前,该代码尚属于初级阶段,仅可用,所以相关配置信息,直接在脚本中:
rtp2rtsp_server.sh
# Configuration parameters
WIDTH=1920
HEIGHT=1080
BITRATE=4000000
FRAMERATE=30
PORT=5602 # UDP port for video streaming
RTSP_PORT=8554 # RTSP server port
RTSP_PATH="stream" # RTSP access path
后续,我们将会考虑以配置文件的形式给出。
3.4 运行
主要支持以下几种操作:
- start 启动服务
- stop 停止服务
- restart 停止+启动服务
- status 检查进程状态
- help 帮助命令
$ ./rtp2rtsp_server.sh help
Usage: ./rtp2rtsp_server.sh {start|restart|stop|status|help}
Commands:
start Start a module
restart Restart a module
stop Stop a module
status Check the status of a module
help Display this help message
4. 总结
总体来说,目前初步实现与Synology Surveillance Station的无缝对接,可以简单应用于相关视频监控。
为我们早期树莓派板子的再利用提供了轻量级代码。
4.1 软件(TODO)
- github帮助文档更新
- 基于当前IP的RTSP URL地址命令行打印
- 安装脚本(依赖组件)
- 增加systemctl启动服务脚本
- 配置参数抽象归纳到配置文件(rtp端口、rtsp端口、rtsp路径、帧率 等等)
- 各时间段可配置(节省资源:存储空间、能量等)
- 支持USB摄像头(当前是CSI摄像头)
- 鱼眼摄像头曲率画面纠正
- OSD功能(温湿度、光感亮度等)
4.2 硬件(TODO)
- 夜视功能(更换夜视摄像头)
- POE集成
- UPS集成
- 多摄像头(USB)
5. 参考资料
【1】libcamera_mon 开源代码之树莓派3B+ Bookworm部署
【2】Raspbian镜像无头烧录
【3】Raspberry Pi3B+之C/C++开发环境搭建