9.7 KiB
9.7 KiB
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
部署过程会:
- 安装 Media Server 和 Agent 到
/opt/ - 创建运行时数据目录
/var/lib/rk3588-media-server/ - 配置日志轮转和自动清理
- 启动 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