184 lines
5.7 KiB
Bash
Executable File
184 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
||
# Скрипт установки и настройки системы потоковой передачи видео
|
||
# Версия: 2.0
|
||
# Дата: 2025-11-20
|
||
|
||
set -e # Выход при ошибке
|
||
|
||
echo "======================================"
|
||
echo " Установка системы видеостриминга"
|
||
echo "======================================"
|
||
echo ""
|
||
|
||
# Цвета для вывода
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Определение платформы
|
||
if [ -f /proc/device-tree/model ]; then
|
||
PLATFORM=$(cat /proc/device-tree/model)
|
||
echo -e "${GREEN}Платформа: ${PLATFORM}${NC}"
|
||
else
|
||
PLATFORM="Unknown"
|
||
echo -e "${YELLOW}Платформа: ${PLATFORM}${NC}"
|
||
fi
|
||
|
||
# 1. Установка системных зависимостей
|
||
echo ""
|
||
echo "Шаг 1: Установка системных зависимостей (GStreamer)..."
|
||
echo "----------------------------------------"
|
||
|
||
if command -v apt-get &> /dev/null; then
|
||
echo "Используется APT package manager"
|
||
|
||
echo "Обновление списка пакетов..."
|
||
sudo apt-get update -qq
|
||
|
||
echo "Установка GStreamer..."
|
||
sudo apt-get install -y \
|
||
gstreamer1.0-tools \
|
||
gstreamer1.0-plugins-base \
|
||
gstreamer1.0-plugins-good \
|
||
gstreamer1.0-plugins-bad \
|
||
gstreamer1.0-plugins-ugly \
|
||
gstreamer1.0-libav \
|
||
libgstreamer1.0-dev \
|
||
libgstreamer-plugins-base1.0-dev
|
||
|
||
# Для Raspberry Pi - установка OMX плагинов
|
||
if [[ "$PLATFORM" == *"Raspberry Pi"* ]]; then
|
||
echo "Обнаружен Raspberry Pi - установка аппаратных кодеков..."
|
||
sudo apt-get install -y gstreamer1.0-omx gstreamer1.0-omx-rpi || true
|
||
fi
|
||
|
||
echo -e "${GREEN}✓ GStreamer установлен${NC}"
|
||
else
|
||
echo -e "${RED}✗ APT не найден. Установите GStreamer вручную.${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# Проверка установки GStreamer
|
||
echo ""
|
||
echo "Проверка установки GStreamer..."
|
||
if gst-inspect-1.0 x264enc &> /dev/null; then
|
||
echo -e "${GREEN}✓ x264enc найден${NC}"
|
||
else
|
||
echo -e "${RED}✗ x264enc не найден${NC}"
|
||
fi
|
||
|
||
if gst-inspect-1.0 mpegtsmux &> /dev/null; then
|
||
echo -e "${GREEN}✓ mpegtsmux найден${NC}"
|
||
else
|
||
echo -e "${RED}✗ mpegtsmux не найден${NC}"
|
||
fi
|
||
|
||
# 2. Установка Python зависимостей
|
||
echo ""
|
||
echo "Шаг 2: Установка Python зависимостей..."
|
||
echo "----------------------------------------"
|
||
|
||
if command -v python3 &> /dev/null; then
|
||
PYTHON_VERSION=$(python3 --version)
|
||
echo "Найден: ${PYTHON_VERSION}"
|
||
|
||
# Установка pip если его нет
|
||
if ! command -v pip3 &> /dev/null; then
|
||
echo "Установка pip..."
|
||
sudo apt-get install -y python3-pip
|
||
fi
|
||
|
||
echo "Установка Flask-SocketIO и зависимостей..."
|
||
cd web_viewer
|
||
pip3 install -r requirements.txt --user
|
||
cd ..
|
||
|
||
echo -e "${GREEN}✓ Python зависимости установлены${NC}"
|
||
else
|
||
echo -e "${RED}✗ Python 3 не найден. Установите Python 3.${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 3. Сборка C++ приложения
|
||
echo ""
|
||
echo "Шаг 3: Сборка C++ приложения..."
|
||
echo "----------------------------------------"
|
||
|
||
cd beacon_track
|
||
|
||
# Создание build директории если её нет
|
||
if [ ! -d "build" ]; then
|
||
echo "Создание директории build..."
|
||
mkdir build
|
||
fi
|
||
|
||
cd build
|
||
|
||
# Очистка старой сборки
|
||
echo "Очистка старой сборки..."
|
||
rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile main
|
||
|
||
# CMake конфигурация
|
||
echo "Запуск CMake..."
|
||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||
|
||
# Сборка
|
||
echo "Компиляция..."
|
||
CORES=$(nproc)
|
||
echo "Использование ${CORES} ядер CPU..."
|
||
make -j${CORES}
|
||
|
||
if [ -f "main" ]; then
|
||
echo -e "${GREEN}✓ Сборка завершена успешно${NC}"
|
||
echo "Исполняемый файл: $(pwd)/main"
|
||
else
|
||
echo -e "${RED}✗ Ошибка сборки${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
cd ../..
|
||
|
||
# 4. Проверка конфигурации
|
||
echo ""
|
||
echo "Шаг 4: Проверка конфигурации..."
|
||
echo "----------------------------------------"
|
||
|
||
CONFIG_FILE="beacon_track/config.ini"
|
||
|
||
if grep -q "EnableVideoStreaming = true" "$CONFIG_FILE"; then
|
||
echo -e "${GREEN}✓ Video Streaming включен в config.ini${NC}"
|
||
else
|
||
echo -e "${YELLOW}! Video Streaming выключен в config.ini${NC}"
|
||
echo " Отредактируйте config.ini и установите EnableVideoStreaming = true"
|
||
fi
|
||
|
||
# Вывод настроек стриминга
|
||
echo ""
|
||
echo "Текущие настройки потоковой передачи:"
|
||
grep -A 10 "\[VideoStreaming\]" "$CONFIG_FILE" | grep -E "(Enable|Stream)" || echo "Секция [VideoStreaming] не найдена"
|
||
|
||
# 5. Инструкции по запуску
|
||
echo ""
|
||
echo "======================================"
|
||
echo " Установка завершена!"
|
||
echo "======================================"
|
||
echo ""
|
||
echo -e "${GREEN}Все компоненты установлены и готовы к использованию.${NC}"
|
||
echo ""
|
||
echo "Для запуска системы:"
|
||
echo ""
|
||
echo "1. Терминал 1 (C++ Backend):"
|
||
echo " cd beacon_track/build"
|
||
echo " ./main realtime output.txt"
|
||
echo ""
|
||
echo "2. Терминал 2 (Flask Web):"
|
||
echo " cd web_viewer"
|
||
echo " python3 app.py"
|
||
echo ""
|
||
echo "3. Откройте браузер:"
|
||
echo " http://localhost:5000"
|
||
echo ""
|
||
echo "Документация: STREAMING_UPGRADE_README.md"
|
||
echo ""
|