联动PLC自动布局显示

layoutx-dev e1d879f82e 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
deploy a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
docs a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
linux a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
.gitignore a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
CMakeLists.txt a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
README.md a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
auto_reboot.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
build.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
capture_fb.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
channels.conf a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
channels_flow_example.conf a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
channels_local.conf a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
composer.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
composer.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
decoder.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
decoder.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
detector.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
detector.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
display.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
display.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
dma_util.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
dma_util.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
flog.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
flog.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
fltk.png a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
hikvision.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
hikvision.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
install.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
install_local_test.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
main.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
plc.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
plc.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
plc_server.py a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
plc_server.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
plc_sim.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
rknn_api.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
start.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_detector_bench.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_dma_heap.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_drm_display.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_mpp.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_plc.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_rga.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
test_rga_color.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
title.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
title.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
uninstall.sh a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
web_server.c a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem
web_server.h a7697d40a0 基线 v1.0-prod: 多路RTSP合成显示系统(RK3568) před 1 týdnem

README.md

rtsp_multi_view

多路 RTSP 视频流多画面合成显示系统,运行于 RK3568 (Rockchip SoC)。

功能

  • 从多个 IP 摄像头通过 RTSP 拉取视频流
  • Rockchip MPP 硬件解码 H.264/H.265(优先零拷贝 DMABuf 直通,不支持时自动回退)
  • Rockchip RGA 硬件加速多画面拼接
  • DRM/KMS 直接输出到 HDMI(双缓冲 VBlank 同步,无撕裂)
  • PLC (S7comm) 位控制布局切换;单画面布局自动切换为对应摄像机的主码流
  • 自动定时重启设备(按日/周周期)

编译

# 快捷编译(推荐)
./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 基准测试需要。

运行

# 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)

主要配置段:

[output]          # 输出分辨率
[camera_list]     # 海康相机批量配置(自动生成 RTSP URL)
[isapi_write]     # 可选:写回相机编码参数
[layout]          # 默认布局网格
[layoutN]         # 各布局的摄像机排列
[title]           # 标题栏
[plc]             # PLC 连接参数
[plc_rules]       # PLC 位号 -> 布局映射规则
[auto_reboot]     # 自动重启调度

自动重启配置

[auto_reboot]
enable = 0        # 0=禁用(默认) 1=启用
period = daily    # daily=每天  weekly=每周
time = 03:00      # HH:MM 24小时制
weekday = monday  # weekly 时有效: monday~sunday

部署

一键部署到新主机

需要 sshpass(脚本会自动安装)。

# 默认部署到 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,无需手动干预。

手动部署

# 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

本地安装

sudo ./install.sh     # 安装(开机自启)
sudo ./uninstall.sh   # 卸载

目标机服务管理

systemctl start rtsp_multi_view    # 启动主程序
systemctl start auto-reboot        # 启动自动重启调度
systemctl status rtsp_multi_view   # 查看状态
journalctl -u rtsp_multi_view -f   # 查看日志