OrangePi3588Media/docs/deployment.md

9.7 KiB
Raw Blame History

RK3588 Media Server 部署指南

架构说明

┌─────────────────────────────────────────────────────────────┐
│                     RK3588 Device                           │
│                                                             │
│  ┌─────────────────────┐     ┌─────────────────────┐       │
│  │   Media Server      │     │   RK3588 Agent      │       │
│  │   (systemd)         │◄────│   (systemd)         │       │
│  │                     │     │                     │       │
│  │   - RTSP输出        │     │   - Web管理界面     │       │
│  │   - HLS输出         │     │   - 服务监控        │       │
│  │   - NPU推理         │     │   - 远程配置        │       │
│  └─────────┬───────────┘     └─────────────────────┘       │
│            │                                                │
│            ▼                                                │
│  ┌───────────────────────────────────────────────────┐     │
│  │              运行时数据目录                        │     │
│  │  /var/lib/rk3588-media-server/                    │     │
│  │  ├── hls/          - HLS分片输出                  │     │
│  │  ├── logs/         - 应用日志                     │     │
│  │  ├── alarms/       - 告警截图                     │     │
│  │  └── clips/        - 告警视频片段                 │     │
│  └───────────────────────────────────────────────────┘     │
│                                                             │
│  /opt/rk3588-media-server/      # 程序文件                  │
│  /opt/rk3588-agent/             # Agent程序                 │
└─────────────────────────────────────────────────────────────┘

设计特点

  • Media Server: 独立的 systemd 服务,高可用(崩溃自动重启)
  • Agent: 独立的 systemd 服务,通过 systemctl 监控和控制 Media Server
  • 两者可独立重启: 重启 Agent 不会影响 Media Server
  • 运行时数据分离: 程序文件在 /opt/,数据在 /var/lib/
  • 自动清理: HLS 分片、日志、告警数据自动轮转清理

快速开始

1. 编译

在 RK3588 设备上编译:

cd ~/apps/OrangePi3588Media

# 编译 Media Server
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

# 编译 Agent可选
cd ../agent
go build -o rk3588-agent_linux_arm64 ./cmd/rk3588-agent

2. 部署

cd ~/apps/OrangePi3588Media
sudo ./scripts/deploy.sh install

部署过程会:

  1. 安装 Media Server 和 Agent 到 /opt/
  2. 创建运行时数据目录 /var/lib/rk3588-media-server/
  3. 配置日志轮转和自动清理
  4. 启动 systemd 服务

3. 查看状态

sudo ./scripts/deploy.sh status

4. 卸载

sudo ./scripts/deploy.sh uninstall

完整命令参考

部署脚本命令

命令 说明
sudo ./deploy.sh install 安装/部署服务
sudo ./deploy.sh upgrade 升级服务(保留配置和数据)
sudo ./deploy.sh status 查看详细运行状态
sudo ./deploy.sh logs 查看实时日志
sudo ./deploy.sh clean-hls [天数] 清理 HLS 旧分片
sudo ./deploy.sh uninstall 卸载服务

Media Server 服务管理

# 启动/停止/重启
sudo systemctl start media-server
sudo systemctl stop media-server
sudo systemctl restart media-server

# 查看状态
sudo systemctl status media-server

# 查看日志
sudo journalctl -u media-server -f
sudo journalctl -u media-server --since "1 hour ago"

Agent 服务管理

# 启动/停止/重启(不影响 Media Server
sudo systemctl start rk3588-agent
sudo systemctl stop rk3588-agent
sudo systemctl restart rk3588-agent

# 查看状态
sudo systemctl status rk3588-agent

# 查看日志
sudo journalctl -u rk3588-agent -f

目录结构

程序目录 (/opt/)

/opt/rk3588-media-server/
├── bin/
│   ├── media-server              # 主程序
│   ├── cleanup-hls.sh            # HLS清理脚本
│   └── plugins/                  # 插件目录
│       ├── libinput_rtsp.so
│       ├── libai_yolo.so
│       ├── libosd.so
│       ├── libtracker.so
│       └── ...
├── lib/                          # 依赖库
├── etc/
│   └── media-server.json         # 配置文件
├── models/                       # AI模型文件
│   ├── best-640.rknn
│   ├── yolov5s-640-640.rknn
│   └── ...
└── web/                          # Web静态文件
    ├── index.html
    ├── graph.html
    ├── hls_player.html           # HLS播放器
    └── hls/                      # HLS输出(符号链接)

/opt/rk3588-agent/
├── rk3588-agent                  # Agent程序
└── agent.config.json             # Agent配置

运行时数据目录 (/var/lib/)

/var/lib/rk3588-media-server/
├── hls/                          # HLS直播分片
│   ├── cam1/
│   │   ├── index.m3u8
│   │   ├── index0.ts
│   │   └── ...
│   ├── cam2/
│   └── ...
├── logs/                         # 应用日志
├── alarms/                       # 告警截图
└── clips/                        # 告警视频片段

/var/lib/rk3588-agent/
└── device_id                     # 设备唯一标识

配置修改

编辑配置文件:

sudo nano /opt/rk3588-media-server/etc/media-server.json

修改后重启服务:

sudo systemctl restart media-server

数据管理

HLS 分片清理

HLS 分片自动清理策略:

  • 默认保留: 3天
  • 自动执行: 每天凌晨3点
  • 手动执行: sudo /opt/rk3588-media-server/bin/cleanup-hls.sh [天数]

日志轮转

日志自动轮转策略:

  • 保留周期: 7天
  • 压缩: 启用
  • 位置: /var/lib/rk3588-media-server/logs/

告警数据清理

自动清理策略(通过 cron

  • 告警视频 (clips): 保留30天
  • 告警图片 (alarms): 保留90天

查看当前存储使用:

sudo ./scripts/deploy.sh status

升级

升级步骤(保留配置和数据):

cd ~/apps/OrangePi3588Media

# 1. 拉取最新代码
git pull

# 2. 重新编译
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

cd ../agent
go build -o rk3588-agent_linux_arm64 ./cmd/rk3588-agent

# 3. 执行升级
cd ..
sudo ./scripts/deploy.sh upgrade

Web 管理界面

Agent 管理界面

http://<设备IP>:9100

功能:

  • 查看 Media Server 运行状态
  • 启动/停止/重启 Media Server
  • 查看配置信息

HLS 播放器

http://<设备IP>:9000/hls_player.html

功能:

  • 5 路视频同时播放
  • 自适应布局
  • 实时状态显示

故障排查

服务无法启动

# 查看详细错误
sudo journalctl -u media-server -n 50

# 检查配置文件语法
sudo cat /opt/rk3588-media-server/etc/media-server.json | python3 -m json.tool

# 检查目录权限
ls -la /var/lib/rk3588-media-server/
ls -la /opt/rk3588-media-server/

NPU 问题

# 查看 NPU 状态
cat /proc/rknpu/load
cat /proc/rknpu/version

# 查看设备节点
ls -la /dev/rknpu*

# 查看温度
cat /sys/class/thermal/thermal_zone6/temp

HLS 无法播放

# 检查 HLS 输出目录
ls -la /var/lib/rk3588-media-server/hls/

# 检查分片生成
ls -la /var/lib/rk3588-media-server/hls/cam1/

# 检查服务端口
ss -tlnp | grep 9000

RTSP 无法连接

# 本地测试
ffplay rtsp://localhost:8555/live/cam1

# 检查端口
ss -tlnp | grep 8555

# 查看编码器状态
grep "RKVENC" /proc/mpp_service/sessions-summary

系统要求

  • 硬件: Orange Pi 5 Plus (RK3588) 或其他 RK3588 设备
  • 系统: Ubuntu 22.04 LTS (ARM64) 或 Debian 11
  • 内存: 建议 4GB 以上
  • 存储: 建议 32GB 以上HLS 分片占用空间)
  • 依赖: RKNN Runtime, MPP, FFmpeg

性能参考

5 路 720p@30fps 并发处理:

资源 使用率 备注
NPU Core0 70-80% YOLO 推理
CPU 20-30% 预处理、编码
编码器 5 路 720p H264 CBR 2Mbps
温度 50-60°C 正常范围
内存 3-4GB 包含系统

备份与恢复

备份配置和数据

# 创建备份
BACKUP_DIR="/root/rk3588-backup-$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

# 备份配置
cp /opt/rk3588-media-server/etc/media-server.json "$BACKUP_DIR/"

# 备份模型
cp -r /opt/rk3588-media-server/models "$BACKUP_DIR/"

# 备份 HLS可选占用空间大
cp -r /var/lib/rk3588-media-server/hls "$BACKUP_DIR/"

echo "备份完成: $BACKUP_DIR"

恢复

# 恢复配置
cp "$BACKUP_DIR/media-server.json" /opt/rk3588-media-server/etc/

# 恢复模型
cp -r "$BACKUP_DIR/models"/* /opt/rk3588-media-server/models/

# 重启服务
sudo systemctl restart media-server