refactor: rebrand to SafeSight Edge
- Rename Agent binary: rk3588-agent → safesight-agent - Update Go module: rk3588sys/agent → safesight-agent - Rename CMake project: rk3588_media_server → safesight_media - Rename Media binary: media-server → safesight-media - Update all install paths, scripts, and config references
This commit is contained in:
parent
5ba627f265
commit
c26531b4f3
@ -1,9 +1,9 @@
|
||||
# Minimum version based on requirements from PRD (CMake >= 3.20)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(rk3588_media_server
|
||||
VERSION 0.1.0
|
||||
DESCRIPTION "RK3588 media server bootstrap"
|
||||
project(safesight_media
|
||||
VERSION 1.0.0
|
||||
DESCRIPTION "SafeSight Media - AI-powered video analysis engine"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
@ -84,28 +84,28 @@ install(TARGETS rk_shared_state
|
||||
LIBRARY DESTINATION bin
|
||||
)
|
||||
|
||||
add_executable(media-server ${SRC_FILES})
|
||||
set_target_properties(media-server PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
target_include_directories(media-server
|
||||
add_executable(safesight-media ${SRC_FILES})
|
||||
set_target_properties(safesight-media PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
target_include_directories(safesight-media
|
||||
PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/third_party
|
||||
)
|
||||
target_link_libraries(media-server PRIVATE project_options Threads::Threads)
|
||||
target_link_libraries(safesight-media PRIVATE project_options Threads::Threads)
|
||||
|
||||
if(RK3588_ENABLE_FFMPEG)
|
||||
target_compile_definitions(media-server PRIVATE RK3588_ENABLE_FFMPEG)
|
||||
target_include_directories(media-server PRIVATE ${FFMPEG_INCLUDE_DIRS})
|
||||
target_link_libraries(media-server PRIVATE PkgConfig::FFMPEG PkgConfig::SWSCALE)
|
||||
target_compile_definitions(safesight-media PRIVATE RK3588_ENABLE_FFMPEG)
|
||||
target_include_directories(safesight-media PRIVATE ${FFMPEG_INCLUDE_DIRS})
|
||||
target_link_libraries(safesight-media PRIVATE PkgConfig::FFMPEG PkgConfig::SWSCALE)
|
||||
endif()
|
||||
|
||||
if(RK3588_ENABLE_MPP)
|
||||
target_include_directories(media-server SYSTEM PRIVATE
|
||||
target_include_directories(safesight-media SYSTEM PRIVATE
|
||||
${RK_MPP_ROOT}/inc
|
||||
${RK_RKNN_ROOT}/examples/3rdparty/mpp/include
|
||||
)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
target_compile_options(media-server PRIVATE -Wno-pedantic)
|
||||
target_compile_options(safesight-media PRIVATE -Wno-pedantic)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -120,11 +120,11 @@ if(RK3588_ENABLE_RGA)
|
||||
message(WARNING "RGA enabled but librga not found; disable RK3588_ENABLE_RGA or install librga-dev")
|
||||
else()
|
||||
message(STATUS "Found librga: ${RK_RGA_LIB}")
|
||||
target_compile_definitions(media-server PRIVATE RK3588_ENABLE_RGA)
|
||||
target_include_directories(media-server SYSTEM PRIVATE ${RK_RGA_INCLUDE_DIR})
|
||||
target_link_libraries(media-server PRIVATE ${RK_RGA_LIB})
|
||||
target_compile_definitions(safesight-media PRIVATE RK3588_ENABLE_RGA)
|
||||
target_include_directories(safesight-media SYSTEM PRIVATE ${RK_RGA_INCLUDE_DIR})
|
||||
target_link_libraries(safesight-media PRIVATE ${RK_RGA_LIB})
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
target_compile_options(media-server PRIVATE -Wno-pedantic)
|
||||
target_compile_options(safesight-media PRIVATE -Wno-pedantic)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@ -142,21 +142,21 @@ if(RK3588_ENABLE_RKNN)
|
||||
if(NOT RK_RKNN_LIB)
|
||||
message(WARNING "RKNN enabled but librknnrt not found; disable RK3588_ENABLE_RKNN or set RKNN_RUNTIME_LIB_DIR")
|
||||
else()
|
||||
target_compile_definitions(media-server PRIVATE RK3588_ENABLE_RKNN)
|
||||
target_include_directories(media-server PRIVATE ${RKNN_RUNTIME_INCLUDE_DIR})
|
||||
target_link_libraries(media-server PRIVATE ${RK_RKNN_LIB})
|
||||
target_compile_definitions(safesight-media PRIVATE RK3588_ENABLE_RKNN)
|
||||
target_include_directories(safesight-media PRIVATE ${RKNN_RUNTIME_INCLUDE_DIR})
|
||||
target_link_libraries(safesight-media PRIVATE ${RK_RKNN_LIB})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(media-server PRIVATE ws2_32)
|
||||
target_link_libraries(safesight-media PRIVATE ws2_32)
|
||||
endif()
|
||||
target_compile_definitions(media-server PRIVATE
|
||||
target_compile_definitions(safesight-media PRIVATE
|
||||
RK_PROJECT_VERSION="${PROJECT_VERSION}"
|
||||
RK_GIT_SHA="${RK_GIT_SHA}"
|
||||
)
|
||||
|
||||
install(TARGETS media-server RUNTIME DESTINATION bin)
|
||||
install(TARGETS safesight-media RUNTIME DESTINATION bin)
|
||||
|
||||
if(BUILD_SAMPLES)
|
||||
add_subdirectory(samples)
|
||||
@ -170,4 +170,4 @@ endif()
|
||||
add_subdirectory(plugins)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(FILES configs/sample_cam1.json DESTINATION ${CMAKE_INSTALL_DATADIR}/rk3588-media-server)
|
||||
install(FILES configs/sample_cam1.json DESTINATION ${CMAKE_INSTALL_DATADIR}/safesight-media)
|
||||
|
||||
14
Readme.md
14
Readme.md
@ -1,5 +1,5 @@
|
||||
|
||||
# RK3588 智能视频分析系统 PRD(v1.2)
|
||||
# SafeSight 智能视觉安全监测平台 PRD(v1.2)
|
||||
|
||||
---
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
### 2.1 系统逻辑架构
|
||||
|
||||
```text
|
||||
[ media-server 主进程 ]
|
||||
[ safesight-media 主进程 ]
|
||||
|
|
||||
+-- Graph Manager (图管理:加载配置、构建DAG、热更新/回滚)
|
||||
|
|
||||
@ -53,7 +53,7 @@
|
||||
+-- HTTP Server (REST API + Web 控制台 + 状态查询)
|
||||
```
|
||||
|
||||
- **media-server**:主入口,负责初始化配置、图构建、主事件循环。
|
||||
- **safesight-media**:主入口,负责初始化配置、图构建、主事件循环。
|
||||
- **Graph Manager(GraphMgr)**:
|
||||
- 对应多个 graph(每个 graph 一路/一组业务流程)。
|
||||
- 实例化节点(Node),建立边(Edge),负责热更新时的 diff & 切换。
|
||||
@ -1199,13 +1199,13 @@ cmake --build build -j$(nproc)
|
||||
|
||||
```bash
|
||||
# 纯转码网关
|
||||
./build/media-server --config configs/sample_cam1.json
|
||||
./build/safesight-media --config configs/sample_cam1.json
|
||||
|
||||
# 带预处理的 pipeline
|
||||
./build/media-server --config configs/sample_preprocess.json
|
||||
./build/safesight-media --config configs/sample_preprocess.json
|
||||
|
||||
# 内置 RTSP Server 模式
|
||||
./build/media-server --config configs/sample_cam1_rtsp_server.json
|
||||
./build/safesight-media --config configs/sample_cam1_rtsp_server.json
|
||||
```
|
||||
|
||||
### 10.2 交叉编译(可选)
|
||||
@ -1228,7 +1228,7 @@ cmake -S . -B build-cross \
|
||||
cmake --build build-cross -j$(nproc)
|
||||
|
||||
# 同步到板子
|
||||
rsync -avz build-cross/ user@board_ip:/opt/media-server/
|
||||
rsync -avz build-cross/ user@board_ip:/opt/safesight-media/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@ -8,18 +8,18 @@
|
||||
"discovery_port": 35688,
|
||||
|
||||
"device_name": "cam1_strict_minio_alarm",
|
||||
"device_id_path": "/var/lib/rk3588-agent/device_id",
|
||||
"device_id_path": "/var/lib/safesight-agent/device_id",
|
||||
|
||||
"models_dir": "/opt/rk3588-media-server/models",
|
||||
"models_dir": "/opt/safesight-media/models",
|
||||
"max_upload_mb": 200,
|
||||
|
||||
"config_path": "/opt/rk3588-media-server/etc/media-server.json",
|
||||
"config_path": "/opt/safesight-media/etc/media-server.json",
|
||||
"media_server_process": {
|
||||
"enable": true,
|
||||
"exec_path": "/opt/rk3588-media-server/bin/systemctl-wrapper.sh",
|
||||
"work_dir": "/opt/rk3588-media-server",
|
||||
"configs_dir": "/opt/rk3588-media-server/etc",
|
||||
"pid_file": "/var/run/rk3588sys-media-server.pid",
|
||||
"exec_path": "/opt/safesight-media/bin/systemctl-wrapper.sh",
|
||||
"work_dir": "/opt/safesight-media",
|
||||
"configs_dir": "/opt/safesight-media/etc",
|
||||
"pid_file": "/var/run/safesight-media-server.pid",
|
||||
"graceful_timeout_ms": 5000
|
||||
},
|
||||
"media_server_base_url": "http://127.0.0.1:9000",
|
||||
|
||||
@ -16,13 +16,13 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/config"
|
||||
"rk3588sys/agent/internal/discovery"
|
||||
"rk3588sys/agent/internal/httpapi"
|
||||
"rk3588sys/agent/internal/log"
|
||||
"rk3588sys/agent/internal/mediaserver"
|
||||
"rk3588sys/agent/internal/modelstore"
|
||||
"rk3588sys/agent/internal/sysinfo"
|
||||
"safesight-agent/internal/config"
|
||||
"safesight-agent/internal/discovery"
|
||||
"safesight-agent/internal/httpapi"
|
||||
"safesight-agent/internal/log"
|
||||
"safesight-agent/internal/mediaserver"
|
||||
"safesight-agent/internal/modelstore"
|
||||
"safesight-agent/internal/sysinfo"
|
||||
)
|
||||
|
||||
var Version = "0.0.0-dev"
|
||||
@ -1,3 +1,3 @@
|
||||
module rk3588sys/agent
|
||||
module safesight-agent
|
||||
|
||||
go 1.21
|
||||
|
||||
@ -6,7 +6,7 @@ import (
|
||||
"path/filepath"
|
||||
"sync"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
type Entry struct {
|
||||
|
||||
@ -11,7 +11,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/sysinfo"
|
||||
"safesight-agent/internal/sysinfo"
|
||||
)
|
||||
|
||||
const Magic = "RK3588SYS_DISCOVERY_V1"
|
||||
|
||||
@ -15,7 +15,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
type agentBinaryUpdateResult struct {
|
||||
|
||||
@ -10,8 +10,8 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"rk3588sys/agent/internal/config"
|
||||
"rk3588sys/agent/internal/mediaserver"
|
||||
"safesight-agent/internal/config"
|
||||
"safesight-agent/internal/mediaserver"
|
||||
)
|
||||
|
||||
func TestHandleConfigCandidateApplyPromotesCandidateAndBacksUpCurrent(t *testing.T) {
|
||||
|
||||
@ -11,7 +11,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"rk3588sys/agent/internal/config"
|
||||
"safesight-agent/internal/config"
|
||||
)
|
||||
|
||||
func TestHandleConfigCandidateStoresValidatedCandidate(t *testing.T) {
|
||||
|
||||
@ -11,8 +11,8 @@ import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"rk3588sys/agent/internal/config"
|
||||
"rk3588sys/agent/internal/procctl"
|
||||
"safesight-agent/internal/config"
|
||||
"safesight-agent/internal/procctl"
|
||||
)
|
||||
|
||||
type fakeProcessController struct {
|
||||
|
||||
@ -11,10 +11,10 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/assets"
|
||||
"rk3588sys/agent/internal/audit"
|
||||
"rk3588sys/agent/internal/metrics"
|
||||
"rk3588sys/agent/internal/sysinfo"
|
||||
"safesight-agent/internal/assets"
|
||||
"safesight-agent/internal/audit"
|
||||
"safesight-agent/internal/metrics"
|
||||
"safesight-agent/internal/sysinfo"
|
||||
)
|
||||
|
||||
type configFileStatus struct {
|
||||
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
type faceGalleryInfo struct {
|
||||
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"rk3588sys/agent/internal/modelstore"
|
||||
"safesight-agent/internal/modelstore"
|
||||
)
|
||||
|
||||
func TestHandleModelsStatusReturnsInstalledModels(t *testing.T) {
|
||||
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
type installedResource struct {
|
||||
|
||||
@ -17,15 +17,15 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/audit"
|
||||
"rk3588sys/agent/internal/config"
|
||||
"rk3588sys/agent/internal/files"
|
||||
"rk3588sys/agent/internal/mediaserver"
|
||||
"rk3588sys/agent/internal/metrics"
|
||||
"rk3588sys/agent/internal/modelstore"
|
||||
"rk3588sys/agent/internal/procctl"
|
||||
"rk3588sys/agent/internal/sysinfo"
|
||||
"rk3588sys/agent/internal/tasks"
|
||||
"safesight-agent/internal/audit"
|
||||
"safesight-agent/internal/config"
|
||||
"safesight-agent/internal/files"
|
||||
"safesight-agent/internal/mediaserver"
|
||||
"safesight-agent/internal/metrics"
|
||||
"safesight-agent/internal/modelstore"
|
||||
"safesight-agent/internal/procctl"
|
||||
"safesight-agent/internal/sysinfo"
|
||||
"safesight-agent/internal/tasks"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
|
||||
@ -12,7 +12,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
|
||||
@ -14,8 +14,8 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/config"
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/config"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
var ErrNotSupported = errors.New("not supported")
|
||||
|
||||
@ -9,7 +9,7 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/log"
|
||||
"safesight-agent/internal/log"
|
||||
)
|
||||
|
||||
func isAlive(pid int) (bool, error) {
|
||||
|
||||
@ -14,7 +14,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"rk3588sys/agent/internal/files"
|
||||
"safesight-agent/internal/files"
|
||||
)
|
||||
|
||||
func Hostname() string {
|
||||
|
||||
@ -205,7 +205,7 @@ if(RK3588_ENABLE_ZLMEDIAKIT AND RK_ZLMK_API_LIB)
|
||||
add_custom_command(TARGET publish POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${RK_ZLMK_API_LIB}" $<TARGET_FILE_DIR:publish>
|
||||
)
|
||||
install(FILES "${RK_ZLMK_API_LIB}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/rk3588-media-server/plugins)
|
||||
install(FILES "${RK_ZLMK_API_LIB}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/safesight-media/plugins)
|
||||
endif()
|
||||
set_target_properties(publish PROPERTIES
|
||||
OUTPUT_NAME "publish"
|
||||
@ -564,8 +564,8 @@ if(RK3588_ENABLE_ZLMEDIAKIT AND RK_ZLMK_API_LIB)
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${RK_ZLMK_API_LIB}" $<TARGET_FILE_DIR:zlm_http>
|
||||
)
|
||||
install(TARGETS zlm_http
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/rk3588-media-server/plugins
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}/rk3588-media-server/plugins
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/safesight-media/plugins
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}/safesight-media/plugins
|
||||
)
|
||||
endif()
|
||||
|
||||
@ -587,6 +587,6 @@ set_target_properties(ai_shoe_det PROPERTIES
|
||||
)
|
||||
|
||||
install(TARGETS input_rtsp input_file publish preprocess ai_yolo ai_face_det ai_scrfd ai_scrfd_sliding ai_face_recog tracker gate osd alarm logic_gate region_event action_recog event_fusion storage ai_scheduler ai_shoe_det
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/rk3588-media-server/plugins
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}/rk3588-media-server/plugins
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/safesight-media/plugins
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}/safesight-media/plugins
|
||||
)
|
||||
|
||||
@ -190,11 +190,11 @@ if [ $BUILD_AGENT -eq 1 ]; then
|
||||
|
||||
# 编译 Agent
|
||||
echo -e "${CYAN}[编译 Agent]${NC}"
|
||||
go build -o rk3588-agent_linux_arm64 ./cmd/rk3588-agent
|
||||
go build -o safesight-agent_linux_arm64 ./cmd/safesight-agent
|
||||
|
||||
echo -e "${GREEN}✓${NC} Agent 编译完成"
|
||||
echo " 输出: $AGENT_DIR/rk3588-agent_linux_arm64"
|
||||
ls -lh "$AGENT_DIR/rk3588-agent_linux_arm64"
|
||||
echo " 输出: $AGENT_DIR/safesight-agent_linux_arm64"
|
||||
ls -lh "$AGENT_DIR/safesight-agent_linux_arm64"
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
#
|
||||
# 用法: sudo ./deploy.sh [install|upgrade|status|logs|clean-hls|uninstall]
|
||||
# 首次安装 Agent 时传入后台管理统一主钥匙;后续部署默认沿用设备保存的主钥匙:
|
||||
# sudo AGENT_TOKEN=<managerd.json 中的 agent_token> ./deploy.sh install
|
||||
# sudo AGENT_TOKEN=<safesightd.json 中的 agent_token> ./deploy.sh install
|
||||
|
||||
set -e
|
||||
|
||||
@ -22,13 +22,13 @@ PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
BUILD_DIR="$PROJECT_DIR/build"
|
||||
|
||||
# 安装目录
|
||||
INSTALL_DIR="/opt/rk3588-media-server"
|
||||
AGENT_INSTALL_DIR="/opt/rk3588-agent"
|
||||
INSTALL_DIR="/opt/safesight-media"
|
||||
AGENT_INSTALL_DIR="/opt/safesight-agent"
|
||||
SERVICE_DIR="/etc/systemd/system"
|
||||
LOGROTATE_DIR="/etc/logrotate.d"
|
||||
|
||||
# 运行时数据目录(持久化数据)
|
||||
RUNTIME_DIR="/var/lib/rk3588-media-server"
|
||||
RUNTIME_DIR="/var/lib/safesight-media"
|
||||
HLS_DIR="$RUNTIME_DIR/hls"
|
||||
LOGS_DIR="$RUNTIME_DIR/logs"
|
||||
ALARMS_DIR="$RUNTIME_DIR/alarms"
|
||||
@ -62,7 +62,7 @@ resolve_agent_token() {
|
||||
echo -e "${GREEN}✓${NC} 使用设备已保存的后台管理统一主钥匙"
|
||||
else
|
||||
echo -e "${RED}错误: 未提供 AGENT_TOKEN,且未找到已保存的主钥匙 $AGENT_TOKEN_FILE${NC}"
|
||||
echo "首次安装必须使用:sudo AGENT_TOKEN=<managerd.json 中的 agent_token> ./scripts/deploy.sh install"
|
||||
echo "首次安装必须使用:sudo AGENT_TOKEN=<safesightd.json 中的 agent_token> ./scripts/deploy.sh install"
|
||||
echo "部署脚本不会本地生成 token。"
|
||||
exit 1
|
||||
fi
|
||||
@ -125,8 +125,8 @@ install_logrotate() {
|
||||
echo -e "${CYAN}[配置日志轮转]${NC}"
|
||||
|
||||
# Media Server 日志轮转
|
||||
cat > "$LOGROTATE_DIR/rk3588-media-server" << 'EOF'
|
||||
/var/lib/rk3588-media-server/logs/*.log {
|
||||
cat > "$LOGROTATE_DIR/safesight-media" << 'EOF'
|
||||
/var/lib/safesight-media/logs/*.log {
|
||||
daily
|
||||
rotate 7
|
||||
compress
|
||||
@ -143,7 +143,7 @@ EOF
|
||||
|
||||
# HLS 分片清理(保留最近7天)
|
||||
cat > "$LOGROTATE_DIR/rk3588-hls" << 'EOF'
|
||||
/var/lib/rk3588-media-server/hls/*/index*.ts {
|
||||
/var/lib/safesight-media/hls/*/index*.ts {
|
||||
daily
|
||||
rotate 1
|
||||
maxage 7
|
||||
@ -152,7 +152,7 @@ EOF
|
||||
nocompress
|
||||
}
|
||||
|
||||
/var/lib/rk3588-media-server/hls/*/index*.m3u8 {
|
||||
/var/lib/safesight-media/hls/*/index*.m3u8 {
|
||||
daily
|
||||
rotate 1
|
||||
maxage 7
|
||||
@ -162,7 +162,7 @@ EOF
|
||||
}
|
||||
EOF
|
||||
|
||||
chmod 644 "$LOGROTATE_DIR/rk3588-media-server"
|
||||
chmod 644 "$LOGROTATE_DIR/safesight-media"
|
||||
chmod 644 "$LOGROTATE_DIR/rk3588-hls"
|
||||
|
||||
echo -e "${GREEN}✓${NC} 日志轮转配置完成"
|
||||
@ -177,7 +177,7 @@ install_hls_cleanup() {
|
||||
# HLS 分片清理脚本 - 保留最近 N 天的分片
|
||||
|
||||
KEEP_DAYS=${1:-3}
|
||||
HLS_DIR="/var/lib/rk3588-media-server/hls"
|
||||
HLS_DIR="/var/lib/safesight-media/hls"
|
||||
|
||||
if [ ! -d "$HLS_DIR" ]; then
|
||||
echo "HLS 目录不存在: $HLS_DIR"
|
||||
@ -196,20 +196,20 @@ EOF
|
||||
chmod +x "$INSTALL_DIR/bin/cleanup-hls.sh"
|
||||
|
||||
# 添加到 crontab(每天凌晨3点执行)
|
||||
CRON_FILE="/etc/cron.d/rk3588-media-server"
|
||||
CRON_FILE="/etc/cron.d/safesight-media"
|
||||
cat > "$CRON_FILE" << 'EOF'
|
||||
# RK3588 Media Server 定时任务
|
||||
SHELL=/bin/bash
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
|
||||
# 每天凌晨3点清理HLS旧分片(保留3天)
|
||||
0 3 * * * root /opt/rk3588-media-server/bin/cleanup-hls.sh 3 >> /var/lib/rk3588-media-server/logs/cleanup.log 2>&1
|
||||
0 3 * * * root /opt/safesight-media/bin/cleanup-hls.sh 3 >> /var/lib/safesight-media/logs/cleanup.log 2>&1
|
||||
|
||||
# 每周日凌晨4点清理告警视频(保留30天)
|
||||
0 4 * * 0 root find /var/lib/rk3588-media-server/clips -name "*.mp4" -type f -mtime +30 -delete 2>/dev/null
|
||||
0 4 * * 0 root find /var/lib/safesight-media/clips -name "*.mp4" -type f -mtime +30 -delete 2>/dev/null
|
||||
|
||||
# 每周日凌晨4点清理告警图片(保留90天)
|
||||
30 4 * * 0 root find /var/lib/rk3588-media-server/alarms -name "*.jpg" -type f -mtime +90 -delete 2>/dev/null
|
||||
30 4 * * 0 root find /var/lib/safesight-media/alarms -name "*.jpg" -type f -mtime +90 -delete 2>/dev/null
|
||||
EOF
|
||||
|
||||
chmod 644 "$CRON_FILE"
|
||||
@ -334,7 +334,7 @@ render_template_config() {
|
||||
fi
|
||||
|
||||
rendered_at="$(date -Iseconds)"
|
||||
out_file="/tmp/rk3588-media-server-${DEPLOY_CONFIG_ID}-${DEPLOY_CONFIG_VERSION}.json"
|
||||
out_file="/tmp/safesight-media-${DEPLOY_CONFIG_ID}-${DEPLOY_CONFIG_VERSION}.json"
|
||||
|
||||
for overlay in $DEPLOY_CONFIG_OVERLAYS; do
|
||||
overlay_path="$PROJECT_DIR/$overlay"
|
||||
@ -413,9 +413,9 @@ import json
|
||||
import os
|
||||
import re
|
||||
|
||||
config_file = "/opt/rk3588-media-server/etc/media-server.json"
|
||||
install_dir = "/opt/rk3588-media-server"
|
||||
runtime_dir = "/var/lib/rk3588-media-server"
|
||||
config_file = "/opt/safesight-media/etc/media-server.json"
|
||||
install_dir = "/opt/safesight-media"
|
||||
runtime_dir = "/var/lib/safesight-media"
|
||||
project_dir = os.path.expanduser("~/apps/OrangePi3588Media")
|
||||
|
||||
def fix_path(path):
|
||||
@ -522,12 +522,12 @@ cmd_install_agent() {
|
||||
|
||||
# 查找 Agent 编译产物(优先使用预编译的 arm64 二进制)
|
||||
AGENT_SOURCE=""
|
||||
if [ -f "$PROJECT_DIR/agent/rk3588-agent_linux_arm64" ]; then
|
||||
AGENT_SOURCE="$PROJECT_DIR/agent/rk3588-agent_linux_arm64"
|
||||
echo -e "${GREEN}✓${NC} 找到预编译 Agent: rk3588-agent_linux_arm64"
|
||||
elif [ -f "$PROJECT_DIR/agent/cmd/rk3588-agent/rk3588-agent" ]; then
|
||||
AGENT_SOURCE="$PROJECT_DIR/agent/cmd/rk3588-agent/rk3588-agent"
|
||||
echo -e "${GREEN}✓${NC} 找到源码编译 Agent: rk3588-agent"
|
||||
if [ -f "$PROJECT_DIR/agent/safesight-agent_linux_arm64" ]; then
|
||||
AGENT_SOURCE="$PROJECT_DIR/agent/safesight-agent_linux_arm64"
|
||||
echo -e "${GREEN}✓${NC} 找到预编译 Agent: safesight-agent_linux_arm64"
|
||||
elif [ -f "$PROJECT_DIR/agent/cmd/safesight-agent/safesight-agent" ]; then
|
||||
AGENT_SOURCE="$PROJECT_DIR/agent/cmd/safesight-agent/safesight-agent"
|
||||
echo -e "${GREEN}✓${NC} 找到源码编译 Agent: safesight-agent"
|
||||
fi
|
||||
|
||||
if [ -z "$AGENT_SOURCE" ]; then
|
||||
@ -536,10 +536,10 @@ cmd_install_agent() {
|
||||
fi
|
||||
|
||||
mkdir -p "$AGENT_INSTALL_DIR"
|
||||
mkdir -p "/var/lib/rk3588-agent"
|
||||
mkdir -p "/var/lib/safesight-agent"
|
||||
|
||||
cp "$AGENT_SOURCE" "$AGENT_INSTALL_DIR/rk3588-agent"
|
||||
chmod +x "$AGENT_INSTALL_DIR/rk3588-agent"
|
||||
cp "$AGENT_SOURCE" "$AGENT_INSTALL_DIR/safesight-agent"
|
||||
chmod +x "$AGENT_INSTALL_DIR/safesight-agent"
|
||||
printf '%s\n' "$AGENT_TOKEN" > "$AGENT_TOKEN_FILE"
|
||||
chmod 600 "$AGENT_TOKEN_FILE"
|
||||
|
||||
@ -553,7 +553,7 @@ cmd_install_agent() {
|
||||
"discovery_enable": true,
|
||||
"discovery_port": 35688,
|
||||
"device_name": "rk3588_$(hostname)",
|
||||
"device_id_path": "/var/lib/rk3588-agent/device_id",
|
||||
"device_id_path": "/var/lib/safesight-agent/device_id",
|
||||
"models_dir": "$INSTALL_DIR/models",
|
||||
"resources_dir": "$INSTALL_DIR/resources",
|
||||
"max_upload_mb": 200,
|
||||
@ -569,7 +569,7 @@ cmd_install_agent() {
|
||||
}
|
||||
EOF
|
||||
|
||||
chown -R orangepi:orangepi "/var/lib/rk3588-agent"
|
||||
chown -R orangepi:orangepi "/var/lib/safesight-agent"
|
||||
|
||||
echo -e "${GREEN}✓${NC} Agent 安装完成,已写入后台管理统一主钥匙"
|
||||
}
|
||||
@ -615,7 +615,7 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# Agent 服务
|
||||
cat > "$SERVICE_DIR/rk3588-agent.service" << EOF
|
||||
cat > "$SERVICE_DIR/safesight-agent.service" << EOF
|
||||
[Unit]
|
||||
Description=RK3588 Agent Service
|
||||
After=network.target media-server.service
|
||||
@ -626,12 +626,12 @@ Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
WorkingDirectory=$AGENT_INSTALL_DIR
|
||||
ExecStart=$AGENT_INSTALL_DIR/rk3588-agent --config $AGENT_INSTALL_DIR/agent.config.json
|
||||
ExecStart=$AGENT_INSTALL_DIR/safesight-agent --config $AGENT_INSTALL_DIR/agent.config.json
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=rk3588-agent
|
||||
SyslogIdentifier=safesight-agent
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -672,8 +672,8 @@ cmd_install() {
|
||||
echo -e "${BLUE}[启动服务]${NC}"
|
||||
systemctl enable media-server
|
||||
systemctl start media-server
|
||||
systemctl enable rk3588-agent
|
||||
systemctl start rk3588-agent
|
||||
systemctl enable safesight-agent
|
||||
systemctl start safesight-agent
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${NC}"
|
||||
@ -711,7 +711,7 @@ cmd_upgrade() {
|
||||
|
||||
# 停止服务
|
||||
echo "停止服务..."
|
||||
systemctl stop media-server rk3588-agent
|
||||
systemctl stop media-server safesight-agent
|
||||
|
||||
# 重新安装
|
||||
cmd_install
|
||||
@ -779,7 +779,7 @@ cmd_status() {
|
||||
|
||||
# Agent
|
||||
echo -e "${CYAN}[RK3588 Agent]${NC}"
|
||||
if systemctl is-active --quiet rk3588-agent 2>/dev/null; then
|
||||
if systemctl is-active --quiet safesight-agent 2>/dev/null; then
|
||||
echo -e " 状态: ${GREEN}● 运行中${NC}"
|
||||
echo " 管理界面: http://$(hostname -I | awk '{print $1}'):9100"
|
||||
else
|
||||
@ -834,15 +834,15 @@ cmd_uninstall() {
|
||||
[ "$REPLY" != "y" ] && [ "$REPLY" != "Y" ] && echo "已取消" && exit 0
|
||||
|
||||
echo "[1/4] 停止服务..."
|
||||
systemctl stop media-server rk3588-agent 2>/dev/null || true
|
||||
systemctl disable media-server rk3588-agent 2>/dev/null || true
|
||||
systemctl stop media-server safesight-agent 2>/dev/null || true
|
||||
systemctl disable media-server safesight-agent 2>/dev/null || true
|
||||
|
||||
echo "[2/4] 删除服务文件..."
|
||||
rm -f "$SERVICE_DIR/media-server.service"
|
||||
rm -f "$SERVICE_DIR/rk3588-agent.service"
|
||||
rm -f "$LOGROTATE_DIR/rk3588-media-server"
|
||||
rm -f "$SERVICE_DIR/safesight-agent.service"
|
||||
rm -f "$LOGROTATE_DIR/safesight-media"
|
||||
rm -f "$LOGROTATE_DIR/rk3588-hls"
|
||||
rm -f "/etc/cron.d/rk3588-media-server"
|
||||
rm -f "/etc/cron.d/safesight-media"
|
||||
systemctl daemon-reload
|
||||
|
||||
echo "[3/4] 备份数据..."
|
||||
@ -899,7 +899,7 @@ case "${1:-install}" in
|
||||
echo " uninstall 卸载服务"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " sudo AGENT_TOKEN=<managerd.json 中的 agent_token> ./deploy.sh install"
|
||||
echo " sudo AGENT_TOKEN=<safesightd.json 中的 agent_token> ./deploy.sh install"
|
||||
echo " sudo ./deploy.sh upgrade # 沿用设备保存的后台管理统一主钥匙"
|
||||
echo " sudo ./deploy.sh status"
|
||||
echo " sudo ./deploy.sh clean-hls 7 # 保留最近7天"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
# RK3588 Media Server 运维脚本
|
||||
# 安装后位于 /opt/rk3588-media-server/script/ops.sh
|
||||
# 安装后位于 /opt/safesight-media/script/ops.sh
|
||||
#
|
||||
# 用法: sudo ./ops.sh [status|start|stop|restart|logs|hw|ddr-status|ddr-performance|ddr-ondemand|ddr-restore]
|
||||
|
||||
@ -15,7 +15,7 @@ NC='\033[0m'
|
||||
|
||||
# 服务名称
|
||||
MEDIA_SERVICE="media-server"
|
||||
AGENT_SERVICE="rk3588-agent"
|
||||
AGENT_SERVICE="safesight-agent"
|
||||
|
||||
cmd_status() {
|
||||
echo -e "${BLUE}========== RK3588 Media Server 状态 ==========${NC}"
|
||||
@ -65,8 +65,8 @@ cmd_status() {
|
||||
|
||||
# HLS 输出
|
||||
echo -e "${CYAN}[HLS 输出]${NC}"
|
||||
if [ -d "/var/lib/rk3588-media-server/hls" ]; then
|
||||
CHANNELS=$(find "/var/lib/rk3588-media-server/hls" -maxdepth 1 -type d 2>/dev/null | wc -l)
|
||||
if [ -d "/var/lib/safesight-media/hls" ]; then
|
||||
CHANNELS=$(find "/var/lib/safesight-media/hls" -maxdepth 1 -type d 2>/dev/null | wc -l)
|
||||
CHANNELS=$((CHANNELS - 1))
|
||||
echo " 通道数: $CHANNELS"
|
||||
fi
|
||||
@ -74,8 +74,8 @@ cmd_status() {
|
||||
|
||||
# 存储使用
|
||||
echo -e "${CYAN}[存储使用]${NC}"
|
||||
echo " HLS: $(du -sh /var/lib/rk3588-media-server/hls 2>/dev/null | cut -f1)"
|
||||
echo " 日志: $(du -sh /var/lib/rk3588-media-server/logs 2>/dev/null | cut -f1)"
|
||||
echo " HLS: $(du -sh /var/lib/safesight-media/hls 2>/dev/null | cut -f1)"
|
||||
echo " 日志: $(du -sh /var/lib/safesight-media/logs 2>/dev/null | cut -f1)"
|
||||
echo ""
|
||||
|
||||
echo "命令帮助:"
|
||||
@ -115,23 +115,23 @@ cmd_logs() {
|
||||
}
|
||||
|
||||
cmd_metrics() {
|
||||
/opt/rk3588-media-server/scripts/monitor_hw.sh
|
||||
/opt/safesight-media/scripts/monitor_hw.sh
|
||||
}
|
||||
|
||||
cmd_ddr_status() {
|
||||
bash /opt/rk3588-media-server/scripts/ddr_mode.sh status
|
||||
bash /opt/safesight-media/scripts/ddr_mode.sh status
|
||||
}
|
||||
|
||||
cmd_ddr_performance() {
|
||||
bash /opt/rk3588-media-server/scripts/ddr_mode.sh performance
|
||||
bash /opt/safesight-media/scripts/ddr_mode.sh performance
|
||||
}
|
||||
|
||||
cmd_ddr_ondemand() {
|
||||
bash /opt/rk3588-media-server/scripts/ddr_mode.sh ondemand
|
||||
bash /opt/safesight-media/scripts/ddr_mode.sh ondemand
|
||||
}
|
||||
|
||||
cmd_ddr_restore() {
|
||||
bash /opt/rk3588-media-server/scripts/ddr_mode.sh restore
|
||||
bash /opt/safesight-media/scripts/ddr_mode.sh restore
|
||||
}
|
||||
|
||||
# 主入口
|
||||
|
||||
@ -40,7 +40,7 @@ if [[ ! -d "$ARTIFACT_DIR" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REMOTE_DIR="/tmp/rk3588_media_server"
|
||||
REMOTE_DIR="/tmp/safesight_media"
|
||||
|
||||
scp -r "$ARTIFACT_DIR" "$USER@$HOST:$REMOTE_DIR"
|
||||
|
||||
|
||||
@ -8,11 +8,11 @@
|
||||
namespace {
|
||||
|
||||
void PrintUsage() {
|
||||
std::cout << "Usage: media-server [--config <path>] [--version]\n";
|
||||
std::cout << "Usage: safesight-media [--config <path>] [--version]\n";
|
||||
}
|
||||
|
||||
void PrintVersion() {
|
||||
std::cout << "RK3588 Media Server v" << rk3588::ProjectVersion()
|
||||
std::cout << "SafeSight Media v" << rk3588::ProjectVersion()
|
||||
<< " (git " << rk3588::GitSha() << ")\n";
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user