Полное решение для потокового видео с iPhone на сервер и мониторинга через веб-интерфейс.
iPhone 15 Pro Max → RTMP → SRS Server → HTTP-FLV/DVR → Web Interface
↓
Nginx (Proxy/Auth)
↓
Auth Service (2FA)
- Захват видео: AVFoundation с поддержкой всех камер iPhone 15 Pro Max
- Кодирование: VideoToolbox H.264 High Profile, без B-frames
- Стриминг: RTMP с поддержкой работы в фоне
- Настройки: Ручное управление камерой, фильтры, выбор разрешения/FPS
- SRS: RTMP ingest, HTTP-FLV live, DVR запись
- Nginx: Reverse proxy, TLS, авторизация
- Auth Service: JWT + 2FA (TOTP)
- DVR Cleaner: Автоматическая очистка старых записей
- Live Player: HTTP-FLV через flv.js, минимальная задержка
- DVR Player: MSE + WebCodecs, покадровый просмотр
- Timeline: 15-минутный таймлайн с навигацией
- Фильтры: Локальные WebGL фильтры
- Docker и Docker Compose
- Домен с SSL сертификатом
- iPhone 15 Pro Max с iOS 17+
- Xcode 15+ (для сборки iOS-приложения)
# Клонируем проект
git clone https://github.com/gr33njj/iOS-Streaming-Solution-App-RTMP-nginx-Web-Interface-.git
cd streaming-solution/server
# Настраиваем переменные окружения
cp .env.example .env
# Отредактируйте .env файл с вашими настройками
# Настраиваем SSL сертификаты
mkdir -p ssl
# Скопируйте cert.pem и key.pem в папку ssl/
# Запускаем сервисы
docker-compose up -d
# Проверяем статус
docker-compose ps
cd streaming-solution/ios-app
# Откройте StreamingApp.xcodeproj в Xcode
# Настройте Bundle Identifier и подписание
# Соберите и установите на iPhone 15 Pro Max
cd streaming-solution/web-interface
# Устанавливаем зависимости
npm install
# Для разработки
npm run dev
# Для production
npm run build
# Скопируйте dist/ в server/web/
Основные настройки в приложении:
- RTMP URL:
rtmp://your-domain.com/live/streamkey
- Разрешение: 720p/1080p
- FPS: 30/60/120/240 (зависит от камеры)
- Камера: Wide/UltraWide/Telephoto
- Качество: Ручные настройки экспозиции, ISO, баланса белого
Доступ: https://your-domain.com
Учетные данные по умолчанию:
- Username:
admin
- Password:
admin123
- 2FA: Настраивается при первом входе
- Откройте приложение StreamingApp
- Введите RTMP URL:
rtmp://your-domain.com/live/your-stream-key
- Выберите настройки:
- Разрешение: 1080p (рекомендуется)
- FPS: 30 (для стабильности) или 60 (для высокого качества)
- Камера: Wide 1x (по умолчанию)
- Настройте фильтры если нужно
- Нажмите "Начать стрим"
- Откройте
https://your-domain.com
- Войдите в систему (admin/admin123)
- Настройте 2FA при первом входе
- Выберите активный стрим
- Используйте два плеера:
- Live: Просмотр в реальном времени
- DVR: Просмотр записи с навигацией
←/→
- Покадровая навигация в DVRSpace
- Воспроизведение/пауза DVRL
- Переход к liveCtrl+1/2/3
- Переключение режимов отображенияCtrl+H
- Скрыть/показать панели управления
Видео (H.264):
- Профиль: High Profile
- GOP: 2 секунды (keyint = fps * 2)
- B-frames: Отключены (zerolatency)
- Битрейт: CBR, 5 Mbps по умолчанию
- Разрешения: 720p (1280x720), 1080p (1920x1080)
Аудио (AAC):
- Кодек: AAC LC
- Частота: 48 kHz
- Каналы: Стерео
- RTMP → SRS: ~500ms
- SRS → HTTP-FLV: ~2-4 секунды
- Общая задержка: 2.5-4.5 секунды
- Формат: CMAF/fMP4
- Длительность сегмента: 1 секунда
- Retention: 15 минут (настраивается)
- Автоочистка: Каждые 30 секунд
- JWT токены с 24-часовым TTL
- Двухфакторная аутентификация (TOTP)
- Rate limiting на API endpoints
- Защищенные cookie с httpOnly
- TLS 1.2/1.3
- HSTS заголовки
- Защита от XSS и CSRF
- Content Security Policy
MIT License - см. файл LICENSE для деталей.