# rtsp_multi_view 多路 RTSP 视频流多画面合成显示系统,运行于 RK3568 (Rockchip SoC)。 ## 功能 - 从多个 IP 摄像头通过 RTSP 拉取视频流 - Rockchip MPP 硬件解码 H.264/H.265(优先零拷贝 DMABuf 直通,不支持时自动回退) - Rockchip RGA 硬件加速多画面拼接 - DRM/KMS 直接输出到 HDMI(双缓冲 VBlank 同步,无撕裂) - PLC (S7comm) 位控制布局切换;单画面布局自动切换为对应摄像机的主码流 - 自动定时重启设备(按日/周周期) ## 编译 ```bash # 快捷编译(推荐) ./build.sh # 或手动 cmake -B build . cmake --build build -j$(nproc) ``` 依赖:GStreamer 1.0(含 allocators)、librga、libdrm、rockchip_mpp、 freetype2、libpng、libjpeg、libcurl、pthread。 `rknnrt` 仅 `test_detector_bench` 基准测试需要。 ## 运行 ```bash # PLC 联调模式(同时启动 plc_server.py + plc_sim + auto_reboot) sudo ./plc_server.sh # 仅启动主程序 ./start.sh # 或手动指定 ./build/rtsp_multi_view -c channels.conf ``` `Ctrl+C` 退出。 ## 配置文件 (channels.conf) 主要配置段: ```ini [output] # 输出分辨率 [camera_list] # 海康相机批量配置(自动生成 RTSP URL) [isapi_write] # 可选:写回相机编码参数 [layout] # 默认布局网格 [layoutN] # 各布局的摄像机排列 [title] # 标题栏 [plc] # PLC 连接参数 [plc_rules] # PLC 位号 -> 布局映射规则 [auto_reboot] # 自动重启调度 ``` ### 自动重启配置 ```ini [auto_reboot] enable = 0 # 0=禁用(默认) 1=启用 period = daily # daily=每天 weekly=每周 time = 03:00 # HH:MM 24小时制 weekday = monday # weekly 时有效: monday~sunday ``` ## 部署 ### 一键部署到新主机 需要 `sshpass`(脚本会自动安装)。 ```bash # 默认部署到 192.168.1.243(root/123456) ./deploy/deploy.sh # 指定目标机 ./deploy/deploy.sh -i 192.168.1.100 -u root -p mypass # 编译后部署 ./deploy/deploy.sh -c # 只打包不部署 ./deploy/deploy.sh -n ``` 脚本自动完成:编译 → 打包 → scp 传输 → 远程执行 install.sh,无需手动干预。 ### 手动部署 ```bash # 1. 本机打包(产物在 deploy/ 目录) ./deploy/pack.sh # 2. 传到目标机 scp deploy/rtsp_multi_view_aarch64_*.tar.gz root@192.168.1.243:/tmp/ # 3. 远程安装 ssh root@192.168.1.243 cd /tmp && tar xzf rtsp_multi_view_aarch64_*.tar.gz cd rtsp_multi_view_deploy && ./install.sh ``` ### 本地安装 ```bash sudo ./install.sh # 安装(开机自启) sudo ./uninstall.sh # 卸载 ``` ### 目标机服务管理 ```bash systemctl start rtsp_multi_view # 启动主程序 systemctl start auto-reboot # 启动自动重启调度 systemctl status rtsp_multi_view # 查看状态 journalctl -u rtsp_multi_view -f # 查看日志 ```