6.5 KiB
6.5 KiB
RK3588 Media Server Systemd 集成
本目录包含 RK3588 Media Server 和 Agent 的 systemd 服务配置和管理脚本。
概述
| 服务 | 描述 | 默认端口 |
|---|---|---|
media-server |
C++ 媒体服务器(视频流处理) | 9000 (HTTP), 8554/8555 (RTSP) |
rk3588-agent |
Go 管理代理(HTTP API) | 9100 |
快速开始
方法一:快速设置(推荐用于开发板)
如果你已经在 Orange Pi 上编译好项目,直接运行:
cd /path/to/OrangePi3588Media
sudo ./scripts/systemd/quick-setup.sh
此脚本会自动:
- 检查并编译项目(如需要)
- 安装 systemd 服务
- 启动服务
- 显示访问地址
方法二:手动安装
cd /path/to/OrangePi3588Media
# 安装服务
sudo ./scripts/systemd/install-systemd.sh
# 或指定自定义路径
sudo ./scripts/systemd/install-systemd.sh \
--media-bin ./build/media-server \
--media-config ./configs/sample_cam1.json \
--agent-bin ./agent/rk3588-agent_linux_arm64 \
--agent-config ./agent/agent_cam1.config.json
方法三:手动步骤(了解细节)
# 1. 复制服务文件
sudo cp scripts/systemd/media-server.service /etc/systemd/system/
sudo cp scripts/systemd/rk3588-agent.service /etc/systemd/system/
# 2. 创建安装目录并复制文件
sudo mkdir -p /opt/rk3588-media-server/{bin,lib,etc,logs}
sudo cp build/media-server /opt/rk3588-media-server/bin/
sudo cp configs/sample_cam1.json /opt/rk3588-media-server/etc/media-server.json
sudo mkdir -p /opt/rk3588-agent
sudo cp agent/rk3588-agent_linux_arm64 /opt/rk3588-agent/rk3588-agent
sudo cp agent/agent_cam1.config.json /opt/rk3588-agent/agent.config.json
# 3. 重载 systemd
sudo systemctl daemon-reload
# 4. 启动并启用服务
sudo systemctl enable --now media-server
sudo systemctl enable --now rk3588-agent
服务管理
查看状态
# 使用便捷脚本
./scripts/systemd/status.sh
# 或手动查看
sudo systemctl status media-server
sudo systemctl status rk3588-agent
# 查看 NPU 负载
sudo watch -n 1 cat /sys/kernel/debug/rknpu/load
启动/停止/重启
# Media Server
sudo systemctl start media-server
sudo systemctl stop media-server
sudo systemctl restart media-server
# Agent
sudo systemctl start rk3588-agent
sudo systemctl stop rk3588-agent
sudo systemctl restart rk3588-agent
# 同时重启两者
sudo systemctl restart media-server rk3588-agent
开机自启
# 启用开机自启
sudo systemctl enable media-server
sudo systemctl enable rk3588-agent
# 禁用开机自启
sudo systemctl disable media-server
sudo systemctl disable rk3588-agent
查看日志
# 实时跟踪日志
sudo journalctl -u media-server -f
sudo journalctl -u rk3588-agent -f
# 查看最近 100 行
sudo journalctl -u media-server -n 100 --no-pager
# 查看今天的日志
sudo journalctl -u media-server --since today
# 按时间范围查看
sudo journalctl -u media-server --since "2024-01-01 10:00:00" --until "2024-01-01 12:00:00"
配置文件
Media Server
位置: /opt/rk3588-media-server/etc/media-server.json
# 编辑配置
sudo nano /opt/rk3588-media-server/etc/media-server.json
# 验证 JSON 格式
python3 -m json.tool /opt/rk3588-media-server/etc/media-server.json
# 重启生效
sudo systemctl restart media-server
Agent
位置: /opt/rk3588-agent/agent.config.json
sudo nano /opt/rk3588-agent/agent.config.json
sudo systemctl restart rk3588-agent
卸载
# 使用卸载脚本(保留配置备份)
sudo ./scripts/systemd/uninstall-systemd.sh
# 或手动卸载
sudo systemctl stop media-server rk3588-agent
sudo systemctl disable media-server rk3588-agent
sudo rm -f /etc/systemd/system/media-server.service
sudo rm -f /etc/systemd/system/rk3588-agent.service
sudo systemctl daemon-reload
# 然后手动删除 /opt/rk3588-media-server/ 和 /opt/rk3588-agent/
故障排查
服务无法启动
# 1. 查看详细错误信息
sudo journalctl -u media-server -n 50 --no-pager
# 2. 检查配置文件
sudo /opt/rk3588-media-server/bin/media-server --config /opt/rk3588-media-server/etc/media-server.json --version
# 3. 检查端口占用
sudo ss -tlnp | grep -E '(9000|8554|8555|9100)'
# 4. 检查权限
ls -la /opt/rk3588-media-server/bin/media-server
端口冲突
如果 9000/8554/8555 端口被占用,修改配置文件:
// media-server.json
{
"http": {
"port": 9001 // 修改为其他端口
},
"rtsp": {
"port": 8556 // 修改为其他端口
}
}
NPU 相关问题
# 检查 NPU 驱动
cat /sys/kernel/debug/rknpu/version
# 检查 NPU 负载
watch -n 1 cat /sys/kernel/debug/rknpu/load
# 检查设备节点
ls -la /dev/rknpu*
文件说明
scripts/systemd/
├── README.md # 本文件
├── media-server.service # Media Server systemd 服务文件
├── rk3588-agent.service # Agent systemd 服务文件
├── install-systemd.sh # 安装脚本
├── uninstall-systemd.sh # 卸载脚本
├── status.sh # 状态查看脚本
└── quick-setup.sh # 快速设置脚本(一键部署)
服务文件详解
media-server.service
[Unit]
Description=RK3588 Media Server
After=network-online.target
[Service]
Type=simple
User=root
ExecStart=/opt/rk3588-media-server/bin/media-server --config /opt/rk3588-media-server/etc/media-server.json
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
关键配置:
Restart=on-failure: 崩溃后自动重启LimitNOFILE=65535: 增加文件描述符限制(视频流需要)After=network-online.target: 确保网络就绪后启动
rk3588-agent.service
[Unit]
Description=RK3588 Agent
After=media-server.service # 可选:确保 media-server 先启动
[Service]
Type=simple
ExecStart=/opt/rk3588-agent/rk3588-agent --config /opt/rk3588-agent/agent.config.json
Restart=always
RestartSec=2
注意事项
- 首次启动: 确保配置文件路径正确,特别是模型路径和摄像头配置
- 权限: 服务以 root 运行,需要访问
/dev/rknpu设备 - 依赖: Agent 可选依赖 media-server,可根据需要调整
After=和Requires= - 日志: 使用
journalctl查看日志,日志大小由 systemd 管理
参考
- 命令.md - 开发和部署命令参考
- API_Device_RemoteMgmt_InterfaceTable.md - Agent API 文档