103 lines
2.9 KiB
Bash
103 lines
2.9 KiB
Bash
#!/bin/bash
|
||
# RK3588 Media Server 快速设置脚本
|
||
# 适用于开发板直接编译部署
|
||
|
||
set -e
|
||
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m'
|
||
|
||
echo -e "${YELLOW}========== RK3588 Media Server 快速设置 ==========${NC}"
|
||
echo ""
|
||
|
||
# 检测是否在 Orange Pi 上
|
||
if [[ "$(uname -m)" != "aarch64" ]]; then
|
||
echo "警告: 当前不是 ARM64 架构,此脚本适用于 RK3588 开发板"
|
||
read -p "是否继续? (y/N): " -n 1 -r
|
||
echo
|
||
[[ ! $REPLY =~ ^[Yy]$ ]] && exit 1
|
||
fi
|
||
|
||
# 检查 sudo
|
||
if [ "$EUID" -ne 0 ]; then
|
||
echo "请使用 sudo 运行"
|
||
exit 1
|
||
fi
|
||
|
||
PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
|
||
BUILD_DIR="$PROJECT_DIR/build"
|
||
|
||
echo "项目目录: $PROJECT_DIR"
|
||
echo ""
|
||
|
||
# 步骤1: 检查编译
|
||
echo "[1/4] 检查编译状态..."
|
||
if [ ! -f "$BUILD_DIR/media-server" ]; then
|
||
echo "未找到编译好的 media-server,开始编译..."
|
||
echo ""
|
||
echo "CMake 配置:"
|
||
cmake -S "$PROJECT_DIR" -B "$BUILD_DIR" \
|
||
-DCMAKE_BUILD_TYPE=Release \
|
||
-DBUILD_TESTS=OFF \
|
||
-DBUILD_SAMPLES=ON \
|
||
-DRK3588_ENABLE_FFMPEG=ON \
|
||
-DRK3588_ENABLE_MPP=ON \
|
||
-DRK3588_ENABLE_RGA=ON \
|
||
-DRK3588_ENABLE_ZLMEDIAKIT=ON \
|
||
-DRK3588_ENABLE_RKNN=ON \
|
||
-DRK_ZLMK_API_LIB_PATH="$PROJECT_DIR/third_party/rknpu2/examples/3rdparty/zlmediakit/aarch64/libmk_api.so" \
|
||
-DRK_ZLMEDIAKIT_INCLUDE_DIR="$PROJECT_DIR/third_party/rknpu2/examples/3rdparty/zlmediakit/include"
|
||
|
||
echo ""
|
||
echo "开始编译(使用 $(nproc) 线程)..."
|
||
cmake --build "$BUILD_DIR" -j$(nproc)
|
||
else
|
||
echo -e "${GREEN}✓${NC} 已编译"
|
||
fi
|
||
echo ""
|
||
|
||
# 步骤2: 安装 systemd 服务
|
||
echo "[2/4] 安装 Systemd 服务..."
|
||
"$(dirname "$0")/install-systemd.sh" \
|
||
--media-bin "$BUILD_DIR/media-server" \
|
||
--media-config "$PROJECT_DIR/configs/sample_cam1.json" \
|
||
--agent-bin "$PROJECT_DIR/agent/rk3588-agent_linux_arm64" \
|
||
--agent-config "$PROJECT_DIR/agent/agent_cam1.config.json"
|
||
|
||
echo ""
|
||
|
||
# 步骤3: 检查端口
|
||
echo "[3/4] 检查端口..."
|
||
for port in 9000 8554 8555 9100; do
|
||
if ss -tln | grep -q ":$port "; then
|
||
echo -e " ${GREEN}✓${NC} 端口 $port 监听正常"
|
||
else
|
||
echo " 端口 $port 未监听"
|
||
fi
|
||
done
|
||
echo ""
|
||
|
||
# 步骤4: 测试
|
||
echo "[4/4] 快速测试..."
|
||
sleep 2
|
||
if systemctl is-active --quiet media-server; then
|
||
echo -e "${GREEN}Media Server 运行正常${NC}"
|
||
echo ""
|
||
echo "测试地址:"
|
||
IP=$(hostname -I | awk '{print $1}')
|
||
echo " HLS: http://$IP:9000/hls/cam1/index.m3u8"
|
||
echo " RTSP: rtsp://$IP:8555/live/cam1"
|
||
else
|
||
echo "Media Server 可能未正常启动,请检查日志:"
|
||
echo " journalctl -u media-server -n 20"
|
||
fi
|
||
echo ""
|
||
|
||
echo -e "${GREEN}设置完成!${NC}"
|
||
echo ""
|
||
echo "常用命令:"
|
||
echo " 查看状态: $(dirname "$0")/status.sh"
|
||
echo " 查看日志: journalctl -u media-server -f"
|
||
echo " 重启服务: systemctl restart media-server"
|